Английские слова переносятся в русский текст - PullRequest
4 голосов
/ 07 февраля 2010

У меня многоязычный документ TeX, в основном на русском языке, но я также включаю некоторые термины на английском языке в скобки, чтобы ознакомить читателя с международной терминологией Например фраза

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

, что просто означает

Два атрибута программирования язык - это его синтаксис и семантика.

выглядит как

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

Также у меня есть \ usepackage [английский, русский] {babel}.

Код выглядит слишком многословно, потому что мне нужно дважды использовать \ selectlanguage для каждого английского слова, чтобы заставить перенос работать. Без этого я получаю пару

переполнен \ hbox ...

сообщений, поскольку TeX не может дефисировать английские слова, когда они появляются в конце строк.

Есть ли лучшее решение?


В ответ на Алексея Малистова.

В дистрибутиве MacTeX есть несколько файлов language.dat

  • / USR / местные / texlive / 2009 / TEXMF-распред / источник / общий / столпотворение
  • / USR / местные / texlive / 2009 / TEXMF-распред / док / общий / столпотворение
  • / USR / местные / texlive / 2009 / TEXMF / текс / общий / конфигурации
  • / USR / местные / texlive / 2009 / TEXMF-вар / текс / общий / конфигурации
  • / USR / местные / texlive / 2009 / TEXMF-распред / текс / лямбда / конфигурации

Я не уверен, что мне следует редактировать. Вероятно, один из первых двух. Они идентичны

% 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 

Но какой?

Также нет команды initexmf. Погуглив, я обнаружил, что аналогом является updmap-sys. Но я не уверен ... Я боюсь испортить мою установку TeX. Пожалуйста, дайте мне правильное направление.

Ответы [ 4 ]

2 голосов
/ 08 февраля 2010

Вместо того, чтобы использовать \selectlanguage{} дважды, поскольку это переключатель, вы можете использовать либо среду otherlanguage, либо макрос \foreighlanguage:

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

Или, для встроенных изменений, как в вашем примере:

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

На самом деле, если вы часто даете английские термины, вы можете определить макрос:

\newcommand{\englishterm}[1]{%
    \foreignlanguage{english}{\emph{#1}}}
2 голосов
/ 08 февраля 2010

Вы должны объединить английские и русские дефисы. Измените файл language.dat, добавив следующее:

ruseng ruenhyph
=russian
=english

И перекомпилируйте все файлы формата:

initexmf --dump

Добавить

Я использую MikTeX. Я не знаю, что вы должны делать именно. Я бы попробовал и поэкспериментировал.

  1. Вы должны добавить «новый язык ruseng», который содержит английский и русский язык. Тогда макрос \setlanguage не требуется. Это работает для меня очень хорошо. Я использую русские и английские слова и не использую \setlanguage.

  2. Вам следует перекомпилировать файл форматов. MikTeX предоставляет команду initexmf. Я уверен, что есть подобная команда для вашего MacTeX.

1 голос
/ 08 февраля 2010

Я считаю, что \selectlanguage должен следовать обычным правилам контекста, чтобы вы могли заключить в скобки часть, которую вы хотите использовать в качестве английского, которая ограничивает локальную область:

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

Я не могу проверить это прямо сейчас, поэтому, если вы обнаружите, что это не работает, я был бы рад, если бы вы сообщили мне об этом, чтобы я мог изменить или удалить этот ответ.

1 голос
/ 07 февраля 2010

Вы можете добавить произвольные дефисы (\-) к каждому английскому слову в зависимости от ситуации.

В качестве альтернативы, вы можете определить собственную среду, которая обрабатывает как textit, так и выбор языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...