2010-02-07 109 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