乳胶中的特殊名称

时间:2010-03-22 19:42:11

标签: latex

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

谢谢和问候!

2 个答案:

答案 0 :(得分:13)

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

Fran\c{c}ois
\'Ecole F\'ed\'erale

(您也可以编写Fran\c{}coisFran\c cois; \c宏不使用参数;大括号或空格只是允许LaTeX查看正确宏名称的技巧。)

否则,试试这个:

\usepackage[utf8]{inputenc}

并使用UTF-8编码直接输入重音符。

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

答案 1 :(得分: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错误。