在我的英文论文乳胶文件中,如何提及以下非英语单词:François,ÉcoleFédérale?
谢谢和问候!
答案 0 :(得分:13)
传统的方法是使用重音添加宏:
Fran\c{c}ois
\'Ecole F\'ed\'erale
(您也可以编写Fran\c{}cois
或Fran\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错误。