如何在 Bib(La)TeX 条目中输入以下标题(一本虚构的书):“如何在 Bib(La)TeX 中使用 {?”
BibTeX 建议括号可以使用反斜杠转义,但如果以这种方式输入,BibTeX 处理器和 Biber 都无法处理标题。
@book{test_123,
title = {How to use \{ in Bib(La)TeX?}
}
Biber 生产
INFO - This is Biber 1.9 running in TOOL mode
INFO - Logfile is 'test.bib.blg'
INFO - Looking for bibtex format file 'test.bib'
INFO - Decoding LaTeX character macros into UTF-8
INFO - Found BibTeX data source 'test.bib'
WARN - Entry test_123 does not parse correctly
WARN - BibTeX subsystem: C:\*********\test.bib_5644.utf8, line 3, warning: possible runaway string started at line 2
ERROR - BibTeX subsystem: C:\********\test.bib_5644.utf8, line 4, syntax error: at end of input, expected one of: number, name (entry type, key, field, or macro name) or quoted string ({...} or "...")
INFO - WARNINGS: 2
INFO - ERRORS: 1
这在“摘要”和“文件”字段中也失败了。
我向 Biber 开发人员报告了此事有人告诉我这里可能有人知道一个窍门。另外,这个问题之前也问过(我猜是以一种迂回的方式)这里
答案1
您可以使用\vphantom 命令包括结束括号但不显示它,即
@book{test_123,
title = {How to use \{\vphantom{\}} in Bib(La)TeX?},
author = {Vinckevicius, Aurimas}
}
对我来说,可以使用普通 BibTeX 和以下 tex 文件:
\documentclass{article}
\begin{document}
\cite{test_123}
\bibliography{references}
\bibliographystyle{alpha}
\end{document}
它看起来是这样的:
(垂直)间距可能会受到轻微影响。
答案2
显然,Biber 知道这一点\textbraceleft
,并试图将其转化为支架,但结果却失败了。:(
这是一个解决方法:
\begin{filecontents*}{\jobname.bib}
@article{testbrace,
author={A. Uthor},
title={How to use {\biberbraceleft} with Bib(La)\TeX?},
journal={Trans. \TeX.SX},
year={2015},
pages={1-10},
}
\end{filecontents*}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\newcommand{\biberbraceleft}{\textbraceleft}
\begin{document}
\fullcite{testbrace}
\end{document}
我做了一些实验:
title={How to use
\iftrue\textbraceleft\else\textbraceright\fi
or
\iftrue\{\else\}\fi\space with Bib(La)\TeX?},
Biber 没有抱怨,他写道
\field{labeltitle}{How to use \iftrue{\else}\fi or \iftrue\{\else\}\fi\space with Bib(La)\TeX?}
显然存在两个问题:
\textbraceleft
,应该可以工作,但实际上写出来的是未转义的{
\{
在 Biber 处理时中断,因为它被视为括号并且不匹配。
诸如
title={\{Braced\}},
会起作用,而
title={\textbraceleft Braced\textbraceright},
输出
\field{title}{{Braced}}
这显然是 Biber 中的一个严重错误。