2010-02-07 5 views
4

J'ai un document TeX multilingue principalement en russe mais j'inclus aussi quelques termes en anglais entre parenthèses pour que le lecteur connaisse la terminologie internationale. Par exemple, la phraseMots anglais césure en texte russe

Два неотъемлемых свойства языка программирования - синтаксис (syntaxe) и семантика (sémantique).

qui signifie simplement

Deux attributs d'un langage de programmation sont sa syntaxe et la sémantique.

ressemble

Два неотъемлемых свойства языка программирования --- \ textit {} синтаксис (\ textit {\ selectlanguage {} syntaxe anglais \ {selectlanguage russe}}) и \ textit {семантика} (\ textit {\ selectlanguage {anglais} sémantique \ selectlanguage {russe}}).

J'ai aussi \ usepackage [anglais, russe] {babel}.

Le code semble trop verbeux parce que j'ai besoin d'utiliser deux fois \ selectlanguage sur chaque mot anglais pour que la césure fonctionne. Sans cela, je reçois quelques

Overfull \ hbox ...

messages parce que TeX ne peut pas hyphen mots anglais quand ils apparaissent aux extrémités des lignes.

Y a-t-il une meilleure solution?


En réponse à Alexey Malistov.

distribution MacTeX a quelques fichiers language.dat

  • /usr/local/texlive/2009/texmf-dist/source/générique/babel
  • /usr/local/texlive/2009/texmf-dist/doc/générique/babel
  • /usr/local/texlive/2009/texmf/tex/générique/config
  • /usr/local/texlive/2009/texmf-var/tex/générique/config
  • /usr/local/texlive/2009/texmf-dist/tex/lambda/config

Je ne suis pas sûr lequel je devrais éditer. Probablement l'un des deux premiers.Ils sont identiques

% File : language.dat 
% Purpose : specify which hypenation patterns to load 
%   while running iniTeX 
=USenglish 
american ushyphen.tex 
=english 
UKenglish ukhyphen.tex 
=british 
french frhyphen.tex 
dutch nehyph2.tex 
german dehypht.tex 
ngerman dehyphn.tex 

Mais lequel?

Il n'y a pas non plus de commande initexmf. Googling autour j'ai découvert que l'analogue est updmap-sys. Mais je ne suis pas sûr ... j'ai peur de gâcher mon installation TeX. S'il vous plaît, donnez-moi la bonne direction.

+0

Je pense que tous les fichiers 'language.dat' doivent être modifiés. –

Répondre

1

Plutôt que d'utiliser \selectlanguage{} deux fois car est un commutateur, vous pouvez utiliser l'environnement otherlanguage, ou \foreighlanguage macro:

\begin{otherlanguage}{english} 
    Hello world 
\end{otherlanguage} 

Ou, pour les changements en-ligne comme dans votre exemple:

Два неотъемлемых свойства языка программирования --- \emph{синтаксис} 
(\foreignlanguage{english}{\emph{syntax}}) и \emph{семантика} 
(\foreignlanguage{english}{\emph{semantics}}). 

En fait, si vous donnez souvent les termes anglais, vous pouvez définir une macro:

\newcommand{\englishterm}[1]{% 
    \foreignlanguage{english}{\emph{#1}}} 
+0

Enfin, j'ai accepté cette réponse. Au fait, probablement quelque chose ne va pas avec la macro. Dans mon cas, l'exemple de travail ressemble à \ newcommand {\ englishterm} [1] {\ foreignlanguage {anglais} {\ emph {# 1}}}. En tout cas merci de mentionner \ foreignlanguage et macro. Et une autre chose pour les personnes ayant le même problème: commande \ sloppy peut être très utile. – Wildcat

+0

Oups, désolé pour ça ... les [] sont en effet corrects :) –

1

Vous pouvez ajouter des tirets facultatifs (\-) sur chaque mot anglais, selon le cas.

Vous pouvez également définir votre propre environnement qui gère à la fois le textit et la sélection de la langue.

+0

+1: Mais pourquoi un environnement? Le Qn cite les usages en mode horizontal; '' def \ russeng # 1 # 2 {# 1 (\ textit {\ selectlanguage {english} syntaxe \ selectlanguage {russe}})} 'fera le tour beaucoup moins lourdement. –

+0

Anon, merci de mentionner les traits d'union discrétionnaires. – Wildcat

1

Je crois que \selectlanguage devrait suivre les règles de portée habituelles, de sorte que vous pouvez joindre la partie que vous voulez être l'anglais accolades, qui délimitent une portée locale:

Два неотъемлемых свойства языка программирования --- \textit{синтаксис} 
({\textit{\selectlanguage{english}syntax}}) и \textit{семантика} 
({\textit{\selectlanguage{english}semantics}}). 

Je ne peux pas tester ce droit maintenant, cependant, si vous trouvez que cela ne fonctionne pas, je serais heureux si vous m'aviez informé du fait, de sorte que je puisse modifier ou supprimer cette réponse.

+1

Merci, Svante! Fonctionne bien. – Wildcat

2

Vous devez combiner les tirets anglais et russe. Modifiez le fichier language.dat, ajoutant ce qui suit:

ruseng ruenhyph 
=russian 
=english 

Et recompiler tous les fichiers de format:

initexmf --dump 

Ajouter

J'utilise MikTeX. Je ne sais pas ce que tu dois faire exactement. Je voudrais essayer et expérimenter.

  1. Vous devez ajouter "new language ruseng" qui contient des hypens anglais et russe. Ensuite, aucune macro \setlanguage n'est nécessaire. Cela fonctionne très bien pour moi. J'utilise des mots russes et anglais et n'utilise pas \setlanguage.

  2. Vous devez recompiler votre fichier de formats. MikTeX fournit initexmf commande. Je suis sûr qu'il existe une commande similaire pour votre MacTeX.

+0

Oups. Je n'ai pas mentionné que j'utilise MacTeX. Désolé. J'ai ajouté quelques informations à mon message. – Wildcat

+0

Enfin je l'ai fait. La commande que j'ai utilisée était "sudo texconfig init". Merci. – Wildcat

Questions connexes