英语单词hyphenation in Russian text

时间:2010-02-07 20:45:02

标签: latex

我的多语言TeX文档主要使用俄语,但我也在括号中加入了一些英文术语,以使读者熟悉国际术语。例如短语

  

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

只是意味着

  

编程的两个属性   语言是它的语法和语义。

看起来像

  

Дванеотъемлемыхсвойстваязыка   программирования---   \ textit {синтаксис}   (\ textit {\ selectlanguage {英语}语法\ selectlanguage {俄语}})   и\ textit {семантика}   (\ textit {\ selectlanguage {英语}语义\ selectlanguage {俄语}})。

我也有\ usepackage [英语,俄语] {babel}。

代码看起来过于冗长,因为我需要在每个英文单词上使用\ selectlanguage两次来进行连字工作。如果没有这个,我会得到几个

  

Overfull \ hbox ...

消息,因为当TeX出现在行的末尾时,TeX无法连接英文单词。

有更好的解决方案吗?


回应Alexey Malistov。

MacTeX发行版有几个language.dat文件

  • 的/ usr /本地/的texlive / 2009 / texmf-dist存放/源极/通用/巴贝尔
  • 的/ usr /本地/的texlive / 2009 / texmf-dist存放/ DOC /通用/巴贝尔
  • 的/ usr /本地/的texlive / 2009 / TEXMF /特克斯/通用/配置
  • 的/ usr /本地/的texlive / 2009 / TEXMF-VAR /特克斯/通用/配置
  • 的/ usr /本地/的texlive / 2009 / texmf-dist存放/特克斯/λ/配置

我不确定我应该编辑哪一个。可能是前两个中的一个。它们是相同的

% 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 个答案:

答案 0 :(得分:2)

你应该结合英语和俄语连字符。 更改文件language.dat,添加以下内容:

ruseng ruenhyph
=russian
=english

并重新编译所有格式文件:

initexmf --dump

添加

我使用MikTeX。我不知道你要做什么。我会尝试和实验。

  1. 你应该添加“新语言ruseng”,其中包含英语和俄语。然后不需要\setlanguage宏。它对我很有用。我使用俄语和英语单词,不要使用\setlanguage

  2. 您应该重新编译格式文件。 MikTeX提供initexmf命令。我确信您的MacTeX有类似的命令。

答案 1 :(得分:2)

您可以使用\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 :(得分:1)

您可以根据需要在每个英语单词上添加自由连字符(\-)。

或者,您可以定义自己的环境来处理textit和语言选择。

答案 3 :(得分:1)

我相信\selectlanguage应该遵循通常的范围规则,这样你就可以将你想要成为英语的部分括在括号中,这样就划定了一个局部范围:

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

我现在无法测试,所以如果你发现它不起作用,如果你告诉我这个事实我会很高兴,所以我可以修改或删除这个答案。