我正在尝试使用参考书目作为我的 latex 报告。我使用一个名为 bibli 的 .bib 文件,其中包含用法语撰写的文章(因此标题带有 é 或 ô 等重音符号)。在我的 .tex 文件的开头,我有
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
为了不用重音符号来写
{'\{e}}
在我的文件中使用 é。它对我的 .tex 文件中的文本工作得很好。但是在我的参考书目 (bibli.bib) 中它不起作用,因为它返回“?”而不是任何重音字母。有没有办法纠正这个问题而不对每个参考书目引用使用 {{e}}?我已经检查了我的编辑器 (TeXMaker) 的首选项,编码已经是 UTF-8
提前致谢
答案1
您应该使用 bibtex 的现代替代品:带有 biber 后端的 biblatex。它完全支持 unicode。
如果你想更进一步,你可能还想切换到原生的 unicode-enginee:xelatex 或 lualatex。你只需要在序言中更改几个包。\usepackage[utf8]{inputenc}
和的组合\usepackage[T1]{fontenc}
必须替换为\usepackage{fontspec}
。
此包负责处理字体和输入编码。您只需要 utf8 编码的源文件。您还可以使用每种 truetype 或 opentype 字体。
对于语言支持polyglossia
应该优先于babel
。
这是一个适用于 lualatex 和 xelatex 的示例:
\documentclass{scrartcl}
\begin{filecontents}{references.bib}
@ARTICLE{test,
TITLE = {à è ê á é},
JOURNAL = {des accents},
YEAR = {2015},
}
\end{filecontents}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{french}
\usepackage[backend=biber]{biblatex}
\addbibresource{build/references.bib}
\begin{document}
\cite{test}
\printbibliography
\end{document}
例如使用 lualatex test.tex、biber test.bcf、lualatex test.tex、lualatex test.tex 进行编译。
如果您仍然想使用 pdflatex,它看起来像这样:
\documentclass{scrartcl}
\begin{filecontents}{references.bib}
@ARTICLE{test,
TITLE = {à è ê á é},
JOURNAL = {des accents},
YEAR = {2015},
}
\end{filecontents}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[backend=biber]{biblatex}
\addbibresource{build/references.bib}
\begin{document}
\cite{test}
\printbibliography
\end{document}
使用 pdflatex test.tex、biber test.bcf、pdflatex test.tex、pdflatex test.tex 进行编译
答案2
这似乎是一个存在了一段时间的问题。特别是我无法使用 Bibtex 或 Biblatex 在我的文档中同时使用 UTF-8 或 latin1,无论是字符还是参考书目,只能使用其中一个,而不能同时使用。我的解决方法是保留参考书目并用 Latex 等效项替换拉丁字符,例如 á = \'{a},但是对每个重音使用替换命令需要做大量工作。解决方案是 Notepad++,它允许针对特定字符串进行多次替换:
找到:(好)|(很好)|(很好)
替换:(?1bad)(?2worse)(?3not)
Notepad++ 将每一个单词替换为目标单词!!!
对于巴西葡萄牙语,在“替换”对话框中:
查找:(á)|(Á)|(à)|(À)|(ã)|(Ã)|(â)|(Â)|(é)|(É)|(ê)|(Ê)|(í)|(Í)|(ó)|(Ó)|(ô)|(Ô)|(õ)|(Õ)|(ú)|(Ú)|(ç)|(Ç)
替换:(?1\'{a})(?2\'{A})(?3\`{a})(?4\`{A})(?5\~{a})(?6\~{A})(?7\^{a})(?8\^{A})(?9\'{e})(?10\'{E})(?11\^{e})(?12\^{E})(?13\'{i})(?14\'{I})(?15\'{o})(?16\'{O})(?17\^{o})(?18\^{O})(?19\~{o})(?20\~{O})(?21\'{u})(?22\'{U})(?23\c{c})(?24\c{C})
任何其他语言只需使用特定字符。
一些细节:
在‘替换’对话框中,勾选区分大小写;
选择正则表达式;
对于‘替换’选项,如果在第一个字符之前更改行,(?1\'{a})...,则替换的字符也可能会更改文本中的行,因此请复制并粘贴没有更改行的选项;
Linux 用户可以使用 Wine 来安装 Notepad++(目前它还不适用于 Linux 克隆版本 Notepadqq)。
我希望它能帮助那些需要对非英语文本进行多次替换的人,一旦 Notepad++ 同时允许这样做(!!!)。
更多信息
https://notepad-plus-plus.org/
https://superuser.com/questions/211011/find-and-replace-several-several-different-values-all-at-once