2010-03-22 18 views
5

Nel mio file di latex in inglese, come menzionare le seguenti parole non inglesi: François, École Fédérale?Nomi speciali in Latex

Grazie e saluti!

+0

Gli elettori vicini dovrebbero prendere in considerazione http://meta.stackexchange.com/questions/12918/can-we-ha-a-ruling-on-latex-on-stackoverflow e http://meta.stackexchange.com/questions/7135/where-should-a-question-about-latex-usage-go – dmckee

risposta

13

Il modo tradizionale è quello di utilizzare le accento aggiunto macro:

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

(Si può anche scrivere Fran\c{}cois o Fran\c cois; le \c macro utilizza alcun parametro, le parentesi graffe o lo spazio sono solo un trucco per permettere LaTeX . per vedere il nome proprio macro)

In caso contrario, provate questo:

\usepackage[utf8]{inputenc} 

e digitare gli accenti direttamente, con UT Codifica F-8.

Ci sono una serie di problemi più o meno sottili con i caratteri e la sillabazione.

+0

+1 per menzionare utf8 in questo contesto –

6

Se non si utilizza la route di input UTF8, eppure si trova di scrivere molti di questi nomi, suggerirei di definire macro per essi. Nel modo più semplice, puoi dire

\newcommand\Francois{Fran\c cois}
ma devi essere sicuro di usarlo come tale: \Francois{} in modo che nessuno spazio venga inghiottito.

D'altra parte, la seguente tecnica funziona abbastanza bene troppo (anche se non posso prendermi il merito per aver inventato essa - l'ho visto in origine in un breve discorso alla BachoTeX 2009 da Philip Taylor):

\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

Ora puoi definire nomi speciali usando, ad es

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

e poi su di essi è possibile utilizzare nel testo con

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

È possibile rendere i tag (le versioni ASCII pianura) essere quello che vuoi - non hanno effettivamente essere correlato a i nomi correttamente accentati.


EDIT: in risposta al problema che errato nomi non producono errori, è possibile modificare la definizione di \[email protected] per

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

noti che \@[email protected]{...} può essere cambiato in \@[email protected]{...}\@eha e si lamentano di più con forza. Oppure, se vuoi fingere di essere (o essere effettivamente) un pacchetto, puoi usare \Package(Warning|Error){<package name>} al posto di \@[email protected](warning|error) e non fingere più di essere un errore LaTeX incorporato.

+0

+1; trucco interessante! Una piccola osservazione, tuttavia: le "parole chiave" digitate in modo errato (ad esempio ) si espandono in uno spazio vuoto senza produrre alcun avviso/errore. –