2010-02-07 110 views
4

我有多种语言的TeX文档大部分都是俄文,但我也在括号中加入了一些英文术语,以使读者熟悉国际术语。例如,短语英文单词连字符在俄文

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

这只是意味着一种编程语言 的

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

看起来像

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

另外我有\ usepackage [english,russian] {babel}。

该代码看起来过于冗长,因为我需要在每个英文单词上使用\ selectlanguage两次以使连字符工作。如果没有这个,我得到一对夫妇

过多的\ hbox中的...

消息,因为TeX的是不能够当他们出现在线条的末端连字符的英文单词。

有没有更好的解决方案?


响应于阿列克谢Malistov。

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

  • 在/ usr /本地/的texlive/2009/texmf-dist存放/源/通用/巴贝尔
  • 在/ usr /本地/的texlive/2009/texmf-dist存放/ DOC /通用/巴贝尔
  • 在/ usr /本地/的texlive/2009/TEXMF/tex的/通用/配置
  • 在/ usr /本地/的texlive/2009/TEXMF-VAR /特/通用/配置
  • /usr/local/texlive/2009/texmf-dist/tex/lambda/config

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

% 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安装。请给我正确的方向。

+0

我认为所有的文件'language.dat'必须改变。 – 2010-02-08 15:13:53

回答

1

而不是使用\selectlanguage{}两次,因为是开关,您可以使用该otherlanguage环境,或\foreighlanguage

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

其实,如果你经常给英文的话,你可以定义一个宏:

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

最后我接受了这个答案。顺便说一句,宏可能有些问题。在我的案例中,工作示例看起来像\ newcommand {\ englishterm} [1] {\ foreignlanguage {english} {\ emph {#1}}}。无论如何感谢提及\ foreignlanguage和宏。而对于有同样问题的人来说另一件事:\ sloppy命令可能非常有用。 – Wildcat 2010-02-08 20:33:17

+0

糟糕,对不起...... []的确是正确的:) – 2010-02-09 01:26:57

1

您可以在每个英文单词的适当加连字符(\-)。

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

+0

+1:但为什么一个环境? Qn引用水平模式; '\ def \ russeng#1#2 {#1(\ textit {\ selectlanguage {english} syntax \ selectlanguage {russian}})}''''' – 2010-02-07 21:40:02

+0

匿名,谢谢提及的自由连字符。 – Wildcat 2010-02-08 11:53:02

1

我相信\selectlanguage应该按照通常的范围规则,这样就可以封闭部分要在括号,其中限定了一个局部范围的英文:

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

我不能对此进行测试的权利但现在,如果你发现它不起作用,如果你告诉我这个事实,我会很高兴,以便我可以修改或删除这个答案。

+1

谢谢,斯万特!工作正常。 – Wildcat 2010-02-08 11:51:34

2

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

ruseng ruenhyph 
=russian 
=english 

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

initexmf --dump 

添加

我用MIKTEX。我不知道你必须做什么。我会尝试和尝试。

  1. 您应该添加“新语言ruseng”,其中包含英语和俄语hypens。然后,不需要\setlanguage宏。它非常适合我。我使用俄语和英语单词,不使用\setlanguage

  2. 你应该重新编译的格式文件。 MikTeX提供了initexmf命令。我确定你的MacTeX有类似的命令。在你的榜样

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

    或者,用于在线更改,如:

+0

Ooops。我没有提到我使用MacTeX。对不起。我添加了一些信息给我的消息。 – Wildcat 2010-02-08 12:10:15

+0

最后我做到了。我使用的命令是“sudo texconfig init”。谢谢。 – Wildcat 2010-02-08 18:21:49