Applying Language-Specific Typography Rules In Latex
Defining the Main Language
Setting the main language in a LaTeX document is crucial for enabling proper hyphenation, font selection, date/number formatting, and other typographical conventions. The babel package allows users to specify the main document language using the \usepackage[language]{babel} command. For example, to set French as the default language:
\usepackage[french]{babel}
The babel package will then automatically apply French typography rules for hyphenation, spacing, punctuation, and more. To change languages mid-document, the \selectlanguage{language} command can be used.
Language-Specific Hyphenation
The babel package configures language-specific hyphenation patterns automatically when the document language is selected. However, manual adjustments to the hyphenation rules can be made as well.
To enable manual hyphenation for words that LaTeX fails to hyphenate correctly, the \hyphenation{word list} command can be used to specify custom hyphenation points. For example:
\hyphenation{well-come}
Likewise, hyphenation patterns can be finetuned by configuring variables like \lcccodes and \ucccodes in the document preamble.
Language-Specific Fonts
LaTeX fonts provide varying levels of language support through their glyph coverage. Fonts optimized for a given language will contain a more extensive set of glyphs with accents, diacritics, and special characters.
When babel selects the document language, it defaults to the Computer Modern font set. Additional fonts like Times or Latin Modern can be specified with font packages like \usepackage{times} or \usepackage{lmodern}.
In the event that a font is missing a required glyph, fallback fonts can be configured through the \babelfont and \babelfallbackfont commands.
Formatting Dates and Numbers
The babel package provides language-specific formatting for dates and numbers when the document language is selected. For even more control, the strftime package can be used to manually format date strings, while the siunitx package enables flexible formatting of numeric quantities.
For example, to format a date in French style:
\strftime{Le %d %B %Y}
Manual number formatting with siunitx may look like:
\num{1234567,89}{,00}
Quotes and Dashes
Punctuation marks like quotes and dashes have language-specific shapes and spacing conventions. Babel configures these typography rules automatically, but manual overrides are also possible.
For example, French style quotes are set by default in French babel documents. But straight quotes can be enforced with:
\frenchbsetup{StandardLayout=true}
Likewise, dash length and spacing is controlled by \frenchbsetup variables that can be adjusted if needed.
Example Document Showcasing Multi-Language Support
A document containing content in multiple languages can benefit greatly from babel's capabilities. By loading the required language packages in the preamble, language-specific rules can be applied to different document elements.
For example, for a document with French and German content:
\usepackage[french,german]{babel}
\begin{french}
...French content...
\end{french}
\begin{german}
...German content...
\end{german}
The french and german environments automatically switch hyphenation, font, punctuation, date formatting, and other language-specific settings locally.
Troubleshooting Language-Specific Issues
When working with multiple languages, a variety of issues can arise. Missing hyphenation patterns can lead to very uneven spacing between words. Font warnings indicate missing glyphs required for a given language.
To view missing hyphenation patterns, \showhyphens{word} can be used to highlight pattern problems. Font issues can be addressed by specifying fallback fonts like \babelfont[french]{rm}[Corbel]{Carlito} to use Carlito as a fallback for missing French characters.
Inconsistent date, number, and quote formats across languages can be visually jarring but are addressed by using manual formatting like strftime and siunitx to override babel defaults where needed.
Additional Language Customization
In some cases, babel does not configure all language-specific rules automatically. Further customization can enhance support through modified pattern files, extended style files, or by creating custom macros.
Custom hyphenation \patternfiles can supplement missing rules in babel-defined language files. New \babeltags can also be defined via \addto\captionshlangi.
Convenience macros like \frenchdate can encapsulate manual date formats for easy reuse, reducing the need to repeat verbose strftime and siunitx formatting.