LaTeX bibentry 错误(?) 和潜在的解决方法:单个项目的多个参考书目条目?

LaTeX bibentry 错误(?) 和潜在的解决方法:单个项目的多个参考书目条目?

作为所有这些的先决条件,我正在使用、、选项tufte-latexbibentry带有MikTeX 2.9 的包。inputencutf8natbib

似乎存在与bibentryUTF8 字符相关的错误/不兼容问题。该问题的简要描述如下:

参考书目条目在其一个字段(特别是标题)中包含 UTF8 字符(我在文件中使用 CJK)。

使用 BibTeX,然后使用 LaTeX,文档可以编译,参考书目会正确排版,UTF8 字符和所有内容。但是,\bibentry{bibliogrpahy key}在正文中引用 UTF8 参考文献会产生乱码,即 UTF8 字符未正确编码。

以下是显示“错误”的 MWE:

 \documentclass[openbib]{tufte-book}
 \usepackage{CJK}
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
 \begin{document}
 \frontmatter

 \mainmatter
 \chapter{testing bibenty}
 Using bibentry with unicode:

\bibentry{utf8key}
\backmatter
\bibliographystyle{plain}
\bibliography{utf8bib}

\end{document}
%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 

书目文件 utf8bib.bib 包含:

@misc{utf8key,
title="The unicode chars are here: \begin{CJK}{UTF8}{cyberbit}日本\end{CJK}",
author="Using Unicode CJK with bibentry",
howpublished="MWE on Stackoverflow."
}

从寻找解决方案来看,这似乎是它bibentry本身的问题。我尝试联系软件包作者,但没有收到回复。

作为一个潜在的解决方法的想法我想到这个:

我可以创建两个书目文件吗?其中一个包含我的所有 bib. 项目,包括 UTF8 条目,但这些字符已被删除;另一个则使用 UTF8 字符复制 bib 项目。

问题就在这里。我想使用剥离的参考书目\bibentry,但我想使用未剥离的参考书目作为文本末尾的印刷参考书目。问题在于避免在最终参考书目中出现重复的 bib 项目(剥离的和未剥离的)。

有没有办法标记或选择要打印的项目,或者这个想法根本不可能实现?

答案1

黑客解决方案

使用\scantokens{日本\endinput}而不是日本。这是关于 catcode 的,但我不想解释太多。这只是使用 eTeX 进行的 catcode 破解,以确保 CJK 符号第一个字节的 catcode 处于活动状态(13)。

如果您将 XeTeX 与 一起使用xeCJK,事情可能会更简单。因为xeCJK不会更改 catcodes。

完整示例:

\begin{filecontents*}{utf8bib.bib}
@misc{utf8key,
title="The unicode chars are here: \scantokens{日本\endinput}",
author="Using Unicode CJK with bibentry",
howpublished="MWE on Stackoverflow."
}
\end{filecontents*}

\documentclass[openbib]{tufte-book}
\usepackage{CJK}
\usepackage[T1]{fontenc}
\usepackage{natbib}

\begin{document}
\begin{CJK}{UTF8}{bsmi} % suggest usage of CJK. It doesn't matter to use it "global"
\frontmatter
\mainmatter
\chapter{testing bibenty}
Using bibentry with unicode:

\bibentry{utf8key}
\backmatter
\bibliographystyle{plainnat}
\bibliography{utf8bib}

\clearpage\end{CJK} % use \clearpage to fix an old bug of CJK
\end{document}

补充笔记

尽管正如 Alan 所说,BibTeX 不支持多字节字符,但大多数情况下它都能正常工作。我个人通常使用 BibTeX 不会出现任何问题。

  • 通常最好CJK只在之后\begin{document}和之前使用一次环境\end{document}

  • (硬)手动换行.bib。不要使用长行,否则多字节 CJK 字符可能会在中间被 BibTeX 截断。

相关内容