2010-03-22 81 views
5

在我的英語論文乳膠文件中,如何提及以下非英文單詞:François,ÉcoleFédérale?Latex中的特殊名稱

感謝和問候!

+0

關閉選民應該考慮http://meta.stackexchange.com/questions/12918/can-we-have-a-ruling-on-latex-on-stackoverflow和http://meta.stackexchange.com/questions/7135/where-should-a-question-about-latex-usage-go – dmckee 2010-03-23 00:17:07

回答

13

的傳統方法是使用重音添加宏:

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

(你也可以寫Fran\c{}coisFran\c cois;在\c宏用途無參數;括號或空間只是一招,讓乳膠。看到合適的宏名)

否則,試試這個:

\usepackage[utf8]{inputenc} 

並直接輸入口音,與UT F-8編碼。

字體和連字符有一些或多或少的細微問題。

+0

+1在這方面提到utf8 – 2010-03-22 20:01:50

6

如果你不走UTF8 inputenc路線,但發現自己寫了很多這些名字,我會建議爲它們定義宏。最簡單的方法是,你可以說

\newcommand\Francois{Fran\c cois}
,但是你需要確保使用它: \Francois{},這樣任何後續的空間都不會被吞噬。

在另一方面,下面的技術工作得很好,太(雖然我不能居功發明了它 - 我看到了它原本在很短的談話在2009年BachoTeX由菲利普·泰勒):

\makeatletter 
\let\[email protected]< 
\catcode`<13 
\def<{\ifmmode\[email protected]\else\expandafter\[email protected]\fi} 
\def\[email protected]#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版本)是任何你想要的 - 他們沒有真正涉及到正確重音的名字。


編輯:響應於拼錯的名稱不會產生錯誤的問題,你可以的 \[email protected]的定義修改爲

\def\[email protected]#1>{\ifcsname name.#1\endcsname 
    \@nameuse{name.#1}% 
\else 
    \@[email protected]{Undefined name #1}% 
\fi}

注意\@[email protected]{...}可以更改爲\@[email protected]{...}\@eha,它會抱怨多有力地。或者,如果你想假裝成爲(或實際上是)一個包,你可以使用\Package(Warning|Error){<package name>}代替\@[email protected](warning|error),它不會再假裝成內置的LaTeX錯誤。

+0

+1;有趣的把戲!然而,一個小小的評論:錯誤的「關鍵字」(例如)會展開爲空白而不會產生任何警告/錯誤。 – 2010-03-23 12:25:48