latex-uni8: Universal inputenc, fontenc and babel for pdflatex + lualatex ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ uni8.sty is a LaTeX style file which makes it easy to use input encoding (UTF-8 by default, can be changed), fontspec.sty (optional), font encoding (T1 if fontspec.sty is not used), babel (English language by default), hyphenation, underline (with soul.sty), default text and math fonts (Computer Modern or Times) and paper sizes correctly with both pdflatex and lualatex. How to use: \documentclass{article} \usepackage{uni8} ... \begin{document} ... \end{document} See the project page https://github.com/pts/latex-uni8 for example files and the latest updates. The name uni8 is an abbreviation of: universal UTF-8 and 8-bit input encoding. It indicates that uni8.sty can set up UTF-8 (utf8) and legacy 8-bit input encodings (e.g. latin1, latin2) correctly in many environments (pdflatex or lualatex, with or without fontspec.sty, T1 or Unicode font encoding). Limitations: * \showhyphens doesn't display accented characters correctly in the console log. With pdflatex on an UTF-8 console all non-ASCII characters are wrong. With lualatex on an UTF-8 console with T1 font encoding some non-ASCII characters (e.g. ő and ű) are wrong: the ones which are at a different location in Unicode and T1 encoding. uni8.sty takes care of the following: * It sets up font families (text: main, sans and mono; also math): Computer Modern (implemented using Latin Modern) by default, and it's possible to select Times + Helvetica + Courier (implemented using TeX Gyre and mathptmx) instead. * It sets up input encoding (UTF-8 is the default, it does \usepackage[utf8]{inputenc} or a variation of that). * It sets the page size based on \documentclass[a4paper]{article} etc. * \usepackage[english]{babel} (this includes setting up hyphenation). If you want a different language, then do someting like \PassOptionsToPackage{hungarian}{babel} before \usepackage{uni8}. * \usepackage{soul} (or a variation of it, if available). * It makes the \ul command (as defined in soul.sty) should just work with footnotes and automatic hyphenation as well. * It makes \hyphenation{...} exceptions work properly, even with accented characters specified the usual way (encoded with the input encoding, UTF-8 by default). (For lualatex, it also makes \patterns{...} work similarly.) * It makes sure that magyar.ldf (if \PassOptionsToPackage{hungarian}{babel} is used) doesn't print useless warnings about inputenc.sty or t1enc.sty. * It sets up font encoding (like T1 encoding with \usepackage{t1enc} if needed). Usage recommendations and best practices: * Use \usepackage{uni8} with pdflatex it possible. * If you need lualatex, probaby you want to use Unicode fonts, thus use \usepackage[fontspec]{uni8}. Configure fonts with \fontspec{...} and \setmainfont{...} as usual. The default for for uni8 is cm (Latin Modern). * \usepackage{uni8} also works with lualatex without fontspec.sty (tested on TeX Live 2019), but for simplicity and increased backwards compatibility (especially for magyar.ldf), use pdflatex instead of lualatex-without-fontspec.sty if possible. The most fragile part of how uni8.sty uses lualatex without fontspec.sty is setting up hyphenation patterns with the T1 encoding. Features: * The default font (\usepackage[font=cm]) families are Computer Modern (implemented using Latin Modern) by default. * Use \usepackage[font=times] to use Times, Helvetica and Courier font families (implemented using TeX Gyre and mathptmx). * Use \usepackage[font=old-times] to use Times, Helvetica and Courier as text and math default fonts (rather than Latin Modern, which is based on Computer Modern). This uses the new old URW-based text fonts with times.sty. * Use \usepackage[inputenc=latin2] to use ISO-8859-2 input encoding. Most users shouldn't need this nowaday, the UTF-8 default is better. * Use \usepackage[inputenc=latin1] to use ISO-8859-1 input encoding. Most users shouldn't need this nowaday, the UTF-8 default is better. * uni8.sty is compatible with hyperref.sty, color.sty and xcolor.sty in both pdflatex and lualatex. * uni8.sty works with pdflatex, lualatex and latex (with .dvi output). How to install LaTeX on Debian Buster, with TeX Live 2019: * To get the pdflatex command, run: sudo apt-get install texlive-latex-base * To get the lualatex command (and the minimal defaults for uni8.sty), run: sudo apt-get install texlive-latex-base texlive-luatex * To make [fontspec] (eqivalent to \usepackage{fontspec}) work, run: sudo apt-get install texlive-latex-base texlive-luatex texlive-latex-recommended * To make [font=times] work without [fontspec], run: sudo apt-get install texlive-latex-base texlive-latex-recommended tex-gyre * To make [font=times] work with [fontspec], run: sudo apt-get install texlive-latex-base texlive-luatex fonts-texgyre texlive-latex-recommended * To make \usepackage{soul} (automatically done by uni8.sty) work, run: sudo apt-get install texlive-latex-base texlive-latex-extra * To make \usepackage{lmodern} (automatically done by uni8.sty) work, run: sudo apt-get install texlive-latex-base * To make \PassOptionsToPackage{english,american,british}{babel} (and the corresponding hyphenation) work, run: sudo apt-get install texlive-latex-base * To make \PassOptionsToPackage{german}{babel} work, run: sudo apt-get install texlive-latex-base texlive-lang-german * To make \PassOptionsToPackage{spanish}{babel} work, run: sudo apt-get install texlive-latex-base texlive-lang-spanish * To make \PassOptionsToPackage{french}{babel} work, run: sudo apt-get install texlive-latex-base texlive-lang-french * To make \PassOptionsToPackage{italian}{babel} work, run: sudo apt-get install texlive-latex-base texlive-lang-italian * To make \PassOptionsToPackage{hungarian}{babel} (and the corresponding hyphenation) work, run: sudo apt-get install texlive-latex-base texlive-lang-european __END__