2009-10-28 42 views
16

當.bib文件具有與.tex文件不同的編碼時,LaTeX處理情況嗎?例如,.tex在ISO-8859-2中,而.bib在UTF-8中。 LaTeX可以實時轉換編碼嗎?或者唯一的辦法就是手動?乳膠和bibtex文件的不同編碼

回答

12

首先,根據LyX wiki中文提供不能使用UTF-8:在UTF-8(即,Unicode)的,這是現今的默認編碼

中文提供不支持的文件文件編碼在大多數操作系統上。原因是目前的BibTeX(v。0.99c)在1988年發佈,因此早於unicode的出現。除非長期公佈的BibTeX 1.0版或許多有計劃的潛在成功應用程序準備就緒,否則拉丁文1(ISO-8859-1)或其他8位編碼必須用於bib文件(這不會影響LaTeX編碼,它仍然可以是utf8)。

通常情況下,無論是中文提供文件中被逐字複製到LaTeX的源代碼(有一些格式可能和案例changings,&角),如書名,作者,&℃。

所以你的BibTeX文件編碼必須匹配你的LaTeX文件使用的,否則事情變得有趣。除非文檔包含正確的軟件包,否則您也不能在BibTeX中使用babel提供的命令(例如"aä,由德語提供)。

規範的方法是使BibTeX文件不知道任何編碼或包裝問題總是用適當的命令指定特殊字符。

這基本上意味着,如果你想絕對確定它的工作原理,而不是編寫ä,你將不得不使用{\" a}。似乎是相當標準的做法。

由奧倫·帕塔什尼克的中文提供手動BibTeXing還詳細說明了這一點:

中文提供現在處理重音 字符。例如,如果你有一個 條目與這兩個領域

author = "Kurt G{\"o}del", 
year = 1931, 

,如果您使用的是阿爾法 書目的風格,然後將中文提供構建 標籤[Göd31]此 項,這是你要什麼想。到 得到這個功能,你必須 把整個重音字符放在 括號中;在這種情況下,{\"o}{\"{o}}會做。此外,這些大括號本身一定不能用大括號包圍 ( 可能劃定整個字段或 整個條目除外);並且必須有一個 反斜槓作爲大括號內的第一個字符 。因此 {G{\"{o}}del}{G\"{o}del}將 都不適用於本示例。此功能 可處理表3.1和3中找到的所有重音符號 以及除所有非符號外國符號外的 符號。2 of LaTeX書。此功能的行爲類似於 定義的「重音」;我們馬上會看到一個例子。 爲了計算標籤中的字母 ,BibTeX認爲大括號內包含的所有內容均爲 單個字母。

0

中文提供對任何非標準的字符編碼隨機支持 - 實際上有時它的工作原理,大部分不正式,不支持的時間(More details)。對於.tex,如果我不用英文寫,我用UTF-8保存.tex,用\ usepackage [utf8 ] {inputenc}

3

即使在最新的版本中,BibTeX也存在非ASCII字符的巨大問題如果您更喜歡現代系統,我想推薦biblatexbiber的組合,兩者仍處於測試階段即使在生產環境中它們也能很好地工作,通過這種組合,與LaTeX書目有關的大多數問題都將消失,作爲附註,biblatex documentation也包含了關於傳統BibTeX的編碼問題的章節(第2.4.3節)

7

可以更改在運行中輸入編碼:

\inputencoding{latin2} 
\bibliography{mybib} 
\inputencoding{utf8} 

\inputencoding命令由inputenc包提供。