乳胶中的特殊名称

Tim*_*Tim 5 latex

在我的英文论文乳胶文件中,如何提及以下非英语单词:François,ÉcoleFédérale?

感谢致敬!

Tho*_*nin 13

传统的方法是使用重音添加宏:

Fran\c{c}ois
\'Ecole F\'ed\'erale
Run Code Online (Sandbox Code Playgroud)

(你也可以写Fran\c{}coisFran\c cois; \c宏不使用参数;大括号或空格只是让LaTeX看到正确的宏名称的技巧.)

否则,试试这个:

\usepackage[utf8]{inputenc}
Run Code Online (Sandbox Code Playgroud)

并使用UTF-8编码直接键入重音符号.

字体和连字符存在许多或多或少的微妙问题.


Ste*_*eve 6

如果您没有使用UTF8 inputenc路由,但发现自己编写了很多这些名称,我建议为它们定义宏.最简单的,你可以说

\newcommand\Francois{Fran\c cois}
但是你需要确保使用它:\Francois{}所以之后的任何空格都不会被吞噬.

另一方面,以下技术也很有效(虽然我不能因为发明它而得到肯定 - 我最初在Philip Pach的2009年BachoTeX简短讲话中看到它):

\makeatletter
\let\latex@less<
\catcode`<13
\def<{\ifmmode\latex@less\else\expandafter\find@name\fi}
\def\find@name#1>{\@nameuse{name.#1}}
\def\DefineName#1#2{\@namedef{name.#1}{#2}}
\makeatother

现在您可以使用,例如,定义特殊名称

\DefineName{Francois}{Fran\c cois}
\DefineName{Ecole Federale}{\'Ecole F\'ed\'erale}

以后你可以在文本中使用它们

I ran into <Francois> at the <Ecole Federale> the other day.

您可以将您的标签(纯ASCII版本)设置为您想要的 - 它们实际上不必与正确重音的名称相关.


编辑:根据这一拼错的名称不产生错误的问题,你可以改变的定义\find@name

\def\find@name#1>{\ifcsname name.#1\endcsname
  \@nameuse{name.#1}%
\else
  \@latex@warning{Undefined name #1}%
\fi}

请注意,\@latex@warning{...}可以更改为\@latex@error{...}\@eha,它会更有力地抱怨.或者,如果你想假装(或实际上)是一个包,你可以\Package(Warning|Error){<package name>}代替\@latex@(warning|error)它使用它,它不会再假装是内置的LaTeX错误.