Unicode 原生 (La)TeX 引擎

Unicode 原生 (La)TeX 引擎

当您需要在 LaTeX 中使用重音符号时,例如当您需要写单词“Cálculo”(葡萄牙语中表示微积分)时,您可以按照以下方式进行:

  1. c\'alculo
  2. 使用包\usepackage[utf8]{inputenc},然后只写“cálculo”

我之前一直用的是第二种方法,但我的教授说第一种方法写重音更好。我在谷歌上没找到很好的解释,有什么很好的解释吗?

答案1

我能想到的唯一合理的理由是屈服于教授的偏好与参考书目有关,特别是使用 BibTeX 创建的书目和按作者姓氏字母顺序对条目进行排序的书目样式。 (旁白:本答案其余部分提出的问题与使用 biblatex+biber 生成的书目无关。)

由于历史原因,BibTeX 不对可能与字母一起出现在和字段中的“重音”字符(如áäà和 )进行排序;相反,它们(仅出于排序目的)被视为来自âauthoreditorA字母Z。这会影响由 Rädermacher、Ràdon、Rámos 和 Râmuz 等作者撰写的作品 [有一些故意拼写错误 - 抱歉!!] 相对于由 Randall 和 Rybczynski 等作者撰写的作品的排序方式。您是否希望将这些条目放在在 Randall 之前或者雷布津斯基之后? 您可能期望发生前者,但 BibTeX 却产生后者的结果。

这是另一个例子:假设您的参考书目包含 Hasbrouck、Haščič、Hase 和 Hayworth 的单一作者条目。您希望 Haščič 的出版物列在 Hase 的出版物之前,还是列在 Hayworth 的出版物之后?如果您输入作者姓名为 而Haščič不是Ha{\v s}\{v c}i{\v c},BibTeX 会提供第二个选项。

有关如何按顺序在 BibTeX 条目中输入重音字符,同时避免上述排序相关问题的详细信息,请参阅帖子如何在参考书目中书写“ä”及其他变音符号和重音字母?[无耻的自我引用警报!]

嗯,我想想第二个原因:如果您的计算机键盘没有提供直接的方法来输入某些重音字符 - - 不仅仅是áä和,â还包括埃、奥格内克和荆棘[!] - - 那么显然很高兴知道您也可以将它们输入为、、\'a等。\"a\^a

单独评论:如果您使用 pdfLaTeX 编译文档,并且直接在文档中输入重音字符,我会假设您也加载了fontenc带有该选项的包T1。如果您使用 XeLaTeX 或 LuaLaTeX 编译文档,则无需加载该fontenc包。


附录:以下 MWE 在 MacTeX2020 系统上使用 pdfLaTeX 编译,演示了 BibTeX 放置 Rädermacher、Ràdon、Rámos 和 Râmuz 的条目(请注意重音字符)雷布津斯基之后而不是在 Randall 之前。哎哟!!因此,为了获得大多数人认为的“正确”排序结果,有必要将这些名称输入为R{\"a}dermacherR{\`a}donR{\'a}mosR{\^a}muz(如果它们出现在BibTeX 条目的 author或字段中)。editor在此处输入图片描述

    \documentclass{article}
    \begin{filecontents}[overwrite]{mybib.bib}
    @misc{r1,author="Randall",year=3000,title="Thoughts"}
    @misc{r2,author="Rädermacher",year=3000,title="Thoughts"}
    @misc{r3,author="Ràdon",year=3000,title="Thoughts"}
    @misc{r4,author="Rámos",year=3000,title="Thoughts"}
    @misc{r5,author="Râmuz",year=3000,title="Thoughts"}
    @misc{r6,author="Rybczynski",year=3000,title="Thoughts"}
    \end{filecontents}
    \usepackage[T1]{fontenc} % useful under pdfLaTeX
    \usepackage[authoryear]{natbib}
    \bibliographystyle{plainnat} % use a bib style that sorts entries alphabetically
    \setlength\bibsep{0pt} % optional 
    \begin{document}
    \nocite{*}
    \bibliography{mybib}
    \end{document}

答案2

实际上,您不需要类型, \'a也不 \usepackage[utf8]{inputenc}需要默认加载的类型,因此只需:

\documentclass{article}
\begin{document}
Cálculo
\end{document}

以前,人们根据操作系统和习惯用法使用各种编码,输入 的一个好理由是,使用或编码\'a也会显示为“á” ,例如,使用 编码会产生“Ã!”,使用 编码会产生错误。如今,几乎每个人都只使用 utf8,这不再是共享 LaTeX 源的优势。latin1cp437álatin1cp437

正如 Mico 所指出的,使用bibtex组成的作者姓名字符在某些语言中会被错误排序。

键盘用错了也是一个很好的理由,甚至还有其他原因。数学模式也有限制:你不能使用$á$(或 $\'{a}$) bot $\acute{a}$,有时我不得不在其他情况下避免使用组合字符,使用包的这个或那个命令<wathever>。我记不住一个具体的例子,这是一种罕见的情况(或者我的记忆力很差)。

但这一切都无法掩盖这样一个事实:编写、阅读或检查带有转义波浪号的长文本的拼写是一件痛苦的事情。因此,只要可以,就把打字 á 和左键 \'{a}作为 B 计划。

答案3

Unicode 原生 (La)TeX 引擎

这里的一些问题假设 LaTeX=pdfLaTeX,但是还有其他具有原生 Unicode 支持的 LaTeX 引擎,即 LuaLaTeX 和 XeLaTeX。如果您可以自由选择,您可以直接使用这些引擎,这将消除许多麻烦,尤其是在列表等中使用重音符号时,它们可以正常工作。

参考书目

参考书目不是由 (La)TeX 引擎处理的,而是由另一种工具(传统上)处理的bibtex。如果您可以自由选择,则不再需要使用 bibtex,而是使用替代参考书目后端 biber 和另一个前端(包),称为 biblatex。

\documentclass{article}
\usepackage[backend=biber]{biblatex}
%\addbibresource{bibliography.bib}

\begin{document}
\end{document}

词汇表等(makeindex)

如果您使用任何使用 makeindex 的东西,您可能需要切换到 xindy,至少如果您想使用非拉丁字符作为整理列表,而使用哪个 TeX 引擎并不重要,例如:

\documentclass{article}
% xindy option, s.t. a .xdy file is generated
\usepackage[xindy]{glossaries}
\usepackage{iftex}
\ifPDFTeX
  \usepackage[T1]{fontenc}
\else
  \usepackage{fontspec}
\fi

%\makenoidxglossaries
\makeglossaries

\newglossaryentry{Radermacher}
{
  name=Rädermacher,
  description={foo}
}

\newglossaryentry{Radon}
{
  name=Ràdon,
  description={bar}
}
\newglossaryentry{Ramos}
{
  name=Rámos,
  description={baz},
}
\newglossaryentry{Ramuz}
{
  name=Râmuz,
  description={buzz},
}
\newglossaryentry{Rybczinski}
{
  name=Rybczinski,
  description={basse},
}

\begin{document}

\glsaddall
\printglossaries

\end{document}

运行latex mwetexindy mwe并将latex mwe按正确顺序输出条目。实际上,排序是特定于语言的(某些语言会按“a、ä、á、...”排序,某些语言按“a、...、z、ä、á、...”排序。xindy(和 LuaTeX/XeTeX)用于-L指定语言。

同样,您可以规避此问题并使用{\'a}sort=Ramuz键使其在某种程度上起作用,但这将对一种排序进行硬编码,并且不允许像 xindy 允许的那样灵活地更改语言。

在期刊中

有些期刊强迫你使用 pdfLaTeX,到目前为止,它至少默认使用 utf8 作为输入编码。但是,你仍然需要将输入字符正确映射到字体字形,因此需要使用 fontenc 包,并且可能会遇到其他包的问题,​​例如使用 Unicode 符号时列出问题。我通常只是iftex在序言中使用并检查 pdfTeX 来加载这些辅助包。这样,我就可以主要用 Unicode 编写,只需在向期刊提交时多考虑一下这个问题。

语境

这不是 LaTeX,而是一个完全不同的 TeX 引擎,它在后端使用 LuaTeX(因此是 UTF-8 原生的),并且不需要任何外部工具(如 bibtex/biber 或 makeindex/xindy)即可工作。基本上,它是“没有多余的装饰,无需担心”的变体:

\definesynonyms[glossary][glossaries]
\glossary[Rädermacher]{Rädermacher}{foo}
\glossary[Ràdon]{Ràdon}{bar}
\glossary[Rámos]{Rámos}{baz}
\glossary[Râmuz]{Râmuz}{buzz}
\glossary[Rybczinski]{Rybczinski}{basse}

\starttext
\completelistofglossaries[criterium=all]
\stoptext

转向 ConTeXt 并非全部尽管很多东西可以说被设计得更好,但这并不容易

相关内容