LaTeX: Difference between revisions
No edit summary |
|||
| (25 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
These days, I always use [https://tug.org/xetex/ XeTeX] (as opposed to e.g. pdflatex | These days, I always use [https://tug.org/xetex/ XeTeX] (as opposed to e.g. pdflatex), usually in conjunction with the [https://ctan.org/pkg/memoir?lang=en Memoir class] and [https://www.ctan.org/pkg/polyglossia polyglossia package] (as opposed to e.g. babel), though I might use LuaTeX instead. Code can generally run through both and result in similar output. XeTeX is significantly slower than pdflatex, and cannot use the full capabilities of the microtype package (as of 2023-09, anyway). Nonetheless, it's a far better way to deal with [[Unicode]] and modern fonts. LuaTeX seems another valid option, and might perhaps be more actively developed. It's currently about as slow as XeTeX. | ||
XeTeX | Note that Amazon's createspace package cannot be used with XeTeX, at least as of 2023-08. | ||
I have a [[Latex_joy_of_man%27s_desiring|blog post from 2023-09-24]] about LaTeX in 2023. | |||
==General== | ==General== | ||
* Use the [ | * Use the [https://ctan.org/pkg/microtype microtype] package for most documents. It improves typography via several means. | ||
** It is only partially supported outside of pdflatex; LuaTex supports it better than XeTeX as of 2023-10 (see the table in the documentation, page 6). | |||
* Use the [https://ctan.org/pkg/realscripts realscripts] package for most documents. It improves sub- and superscripts when using OpenType fonts with appropriate features (normally the glyphs are simply drawn at a smaller size). It doesn't work well in certain environments or in certain cases, in which case use a '*' suffix to revert to the previous definitions. It's best to use this from the beginning of a document so that you check each placement. | |||
** As of late 2023, it does not work well with [https://ctan.org/pkg/siunitx?lang=en siunitx] in my experience. You'll want to define <tt>text-subscript-command</tt> and <tt>text-superscript-command</tt> to be commands which use <tt>\textsuperscript*</tt> etc., though this does seem to work. | |||
* 72.27 points equals 1 inch equals 25.4 millimeter | |||
* Invoke with <tt>-halt-on-error</tt> for better life quality | |||
** You probably want <tt>-shell-escape</tt> as well. I've never found a situation where it's bad. | |||
===LuaLaTeX/XeTeX notes=== | |||
* LuaLaTeX needs the Harfbuzz renderer to handle complex languages, and it's superior in any case. | |||
** I think this is the default as of 2020 ("LuaHBTex") | |||
==Punctuation== | ==Punctuation== | ||
===Quotation Marks=== | ===Quotation Marks=== | ||
Use <tt>``</tt> for the left mark, and two apostrophes for the right. | * Use <tt>``</tt> for the left mark, and two apostrophes for the right. | ||
* If you're nesting single quotes within double quotes (e.g. for a quote within a quote), you might run into problems when the interior quote ends or begins with the exterior one, e.g. <nowiki>'''</nowiki> (which is rendered as a double right quote followed by a single right quote). To properly nest, use e.g. <nowiki>'\thinspace''</nowiki>. | |||
* If you want an actual old-skool quotation mark (for emulating old terminals, perhaps), try <tt>\textquotedbl</tt>. | |||
** For an old-skool apostrophe, <tt>\textquotesingle</tt>. | |||
===Hyphens/Dashes=== | ===Hyphens/Dashes=== | ||
*Hyphens separate the parts of a compound word. Use a single '-', without spaces. | * Hyphens separate the parts of a compound word. Use a single '-', without spaces. | ||
* | * En dashes separate the bounds of a range, usually numerics. Use two '-' characters, without spaces. | ||
* | * Em dashes separate distinct thoughts. Use three '-' characters, without spaces. | ||
*Minus signs are a mathematical entity. Use a single '-' in math mode. | * Minus signs are a mathematical entity. Use a single '-' in math mode. | ||
* To get two actual hyphens, try <tt>-{}-</tt>. | |||
===Periods=== | ===Periods=== | ||
To get correct spacing: | To get correct spacing: | ||
| Line 29: | Line 46: | ||
===Backslashes=== | ===Backslashes=== | ||
Use <tt>\textbackslash{}</tt> to render a backslash in text. | Use <tt>\textbackslash{}</tt> to render a backslash in text. | ||
==Lists== | ==Lists== | ||
Enclose bulleted lists within a <tt>\begin{itemize}</tt> and <tt>\end{itemize}</tt> block. Each element is preceded by <tt>\item</tt>. | Enclose bulleted lists within a <tt>\begin{itemize}</tt> and <tt>\end{itemize}</tt> block. Each element is preceded by <tt>\item</tt>. | ||
| Line 41: | Line 59: | ||
* Italics: <tt>\textit{italicized text}</tt> (it is advised to end most italicized sequences with "\/") | * Italics: <tt>\textit{italicized text}</tt> (it is advised to end most italicized sequences with "\/") | ||
* Monospace: <tt>\texttt{typewriter-stylized text}</tt> | * Monospace: <tt>\texttt{typewriter-stylized text}</tt> | ||
LuaTeX and XeTeX support modern (TTF, OTF, etc.) fonts naturally. Use <tt>-otf</tt> versions of packages with these engines if they're available (e.g. [https://ctan.org/pkg/kpfonts-otf?lang=en kpfonts-otf] rather than kpfonts). | |||
===Spacing=== | ===Spacing=== | ||
* The default margins are generally 1.5" or more, more suitable for books than other documents. For 1" margins, add <tt>\usepackage{fullpage}</tt>. | * The default margins are generally 1.5" or more, more suitable for books than other documents. For 1" margins, add <tt>\usepackage{fullpage}</tt>. | ||
| Line 49: | Line 70: | ||
To include monospaced documents (code, emails, etc) use <tt>\VerbatimInput</tt> on a filename argument. This requires the <tt>moreverb</tt> package. | To include monospaced documents (code, emails, etc) use <tt>\VerbatimInput</tt> on a filename argument. This requires the <tt>moreverb</tt> package. | ||
* Important attributes include ''fontsize'', ''frame'', ''framerule'', ''label'', and ''numbers'' | * Important attributes include ''fontsize'', ''frame'', ''framerule'', ''label'', and ''numbers'' | ||
To do a background color/image with text, to set a block of text away from the main body, to do anything funky like that, [https://ctan.org/pkg/tcolorbox?lang=en tcolorbox] is the way. For instance, to stretch an image semitransparently behind text without any extra whitespace or background color: | |||
<pre> | |||
\begin{tcolorbox}[enhanced, | |||
size=minimal, | |||
interior style={fill overzoom image=IMAGEFILE,fill image opacity=0.25}, | |||
opacityback=0, | |||
beforeafter skip=0pt] | |||
...text goes here... | |||
\end{tcolorbox} | |||
</pre> | |||
==[[Unicode]]== | ==[[Unicode]]== | ||
Basic LaTeX doesn't support UTF-8 beyond expanding macros based on lexical sequences. If this is intended, use the <tt>utf8</tt> parameter to the <tt>inputenc</tt> package. | Basic LaTeX doesn't support UTF-8 beyond expanding macros based on lexical sequences. If this is intended, use the <tt>utf8</tt> parameter to the <tt>inputenc</tt> package. | ||
You should just use XeTeX or LuaTeX. Both aim to be a fully Unicode-aware TeX engines. You shouldn't need to specify any utf8-specific stuff in your preamble. | |||
==BibTeX== | ==BibTeX== | ||
* Style [http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html examples] | * Style [http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html examples] | ||