Latex 俄语文本中的英语连字号

Latex 俄语文本中的英语连字号,latex,Latex,我有多语种的TeX文档,大部分是俄语的,但我也在括号中包含了一些英语术语,以使读者熟悉国际术语。比如这个短语 а 语法 (语义学) 也就是说 编程的两个属性 语言是它的语法和语义 看起来像 а программирования --- \文本信息 (\textit{\selectlanguage{english}语法\selectlanguage{俄语}) а\texit{Сааааа} (\textit{\selectlanguage{english}语义\selectlanguage{俄语}

我有多语种的TeX文档,大部分是俄语的,但我也在括号中包含了一些英语术语,以使读者熟悉国际术语。比如这个短语

а 语法 (语义学)

也就是说

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

看起来像

а программирования --- \文本信息 (\textit{\selectlanguage{english}语法\selectlanguage{俄语}) а\texit{Сааааа} (\textit{\selectlanguage{english}语义\selectlanguage{俄语})

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

代码看起来太冗长了,因为我需要在每个英文单词上使用\selectlanguage两次以使断字生效。没有这个,我就有两个

已满\hbox

消息,因为TeX无法在英文单词出现在行尾时使用连字符

有更好的解决方案吗?


回应阿列克谢·马利斯托夫。

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

  • /usr/local/texlive/2009/texmf dist/source/generic/babel
  • /usr/local/texlive/2009/texmf dist/doc/generic/babel
  • /usr/local/texlive/2009/texmf/tex/generic/config
  • /usr/local/texlive/2009/texmf var/tex/generic/config
  • /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装置。请告诉我正确的方向。

您可以在每个英文单词上添加任意连字符(
\-


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

我认为
\selectlanguage
应该遵循通常的范围规则,这样您就可以将想要成为英语的部分括在大括号中,大括号界定了本地范围:

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

不过,我现在无法对此进行测试,因此如果您发现它不起作用,我很高兴您能通知我这一事实,以便我可以修改或删除此答案。

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

ruseng ruenhyph
=russian
=english
并重新编译所有格式文件:

initexmf --dump
添加

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

  • 您应该添加“新语言俄语”,其中包含英语和俄语催眠词。则不需要
    \setlanguage
    宏。它对我很有效。我使用俄语和英语单词,不使用
    \setlanguage

  • 你应该重新编译你的格式文件
    MikTeX
    提供
    initexmf
    命令。我相信你的MacTeX也有类似的命令


  • 您可以使用
    otherlanguage
    环境或
    \foreighlanguage
    宏,而不是使用
    \selectlanguage{}
    两次,因为这是一个开关:

    \begin{otherlanguage}{english}
       Hello world
    \end{otherlanguage}
    
    或者,对于示例中的内联更改:

    Два неотъемлемых свойства языка программирования --- \emph{синтаксис}
    (\foreignlanguage{english}{\emph{syntax}}) и \emph{семантика}
    (\foreignlanguage{english}{\emph{semantics}}).
    
    事实上,如果您经常使用英语术语,您可以定义宏:

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

    +1:但是为什么是环境呢?Qn引用水平模式中的用法
    \def\russeng#1#2{1(\textit{\selectlanguage{english}syntax\selectlanguage{russian}}})}
    将更轻松地完成此任务。我没有提到我使用MacTeX。对不起。我在邮件中添加了一些信息。最后我成功了。我使用的命令是“sudotexconfig init”。谢谢。我想所有文件
    语言.dat
    都必须更改。最后我接受了这个答案。顺便说一下,宏可能有问题。在我的例子中,工作示例看起来像\newcommand{\englishterm}[1]{\foreignlanguage{english}{\emph{1}}}。无论如何,谢谢你提到\外语和宏。对于有同样问题的人来说,还有一件事:\sloppy命令可能非常有用。