参考书目中的对齐制表符 & 位置错误

参考书目中的对齐制表符 & 位置错误

Misplaced alignment tab character &.TeXtudio在插入参考书目的那行中给出了错误。此行\include{\dir/bibliography}链接到

\manualmark%
\markboth{\spacedlowsmallcaps{\bibname}}{\spacedlowsmallcaps{\bibname}}
\refstepcounter{dummy}
\addtocontents{toc}{\protect\vspace{\beforebibskip}} 
\addcontentsline{toc}{chapter}{\tocEntry{\bibname}}
\label{app:bibliography}

\emergencystretch=1em%
\printbibliography

我认为问题可能是由&参考文献中的符号引起的,其中有很多符号。我可以用\&或“和”替换它们,但也许有更简单的解决方案。

我正在使用 MiKTeX 和 Biber。

答案1

该字符&对于 LaTeX 具有特殊含义:它通常标记新的表格列或新的对齐列(想想align)。

&因此,在标准 LaTeX 中,您通常不能将其用作与号字符,而必须将其转义为\&,请参阅LaTeX 中的转义字符。此规则有一些例外:在\verb|...|和其他逐字命令以及\url和一些相关命令中,您通常可以使用&它们而无需转义,但这些命令有一些微妙之处(例如,请参阅如何使用包含特殊字符的链接作为脚注?)。

参考书目也差不多。你应该&逃到\&.bib参考书目除了在特殊逐字字段中,如doieprinturl

最好的解决方案™是确保在文件中&转义,除非它在​​, ,\&.bibdoieprinturl或其他逐字字段中。例如,而不是

publisher = {Pub & Co.},

你应该写

publisher = {Pub \& Co.},

如果出于某种原因,您绝对无法亲自修复.bib文件一次,您可以让 Biber 为您即时修复(但这是最多是第二佳解决方案™)。(biblatex使用 XML 格式与 Biber 进行通信,其中&也是一个特殊字符,因此我们最好将其转义为\x{26}。)

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}

\DeclareSourcemap{
  \maps{
    \map{
      \step[fieldsource=publisher,
        match=\regexp{\x{26}},
        replace=\regexp{\\\x{26}}]
    }
  }
}

\begin{filecontents}{\jobname.bib}
@book{appleby,
  author    = {Humphrey Appleby},
  title     = {On the Importance of the Civil Service},
  date      = {1980},
  publisher = {Pub & Co.},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
\cite{appleby}
\printbibliography
\end{document}

根据需要显示“Pub & Co.”

有关的BibTex 的 Sourcemap 中的 & 符号

答案2

你说得对。'&' 对 (La)TeX 来说有特殊含义,而编制参考书目的结果最终要由 LaTeX 处理。

有些名称包含“&”,例如期刊“Software -- Practice & Experience”或“John Wiley & Sons”。用“and”替换是错误的。请使用“\&”,这是 (La)TeX 键入该字符的方式。

相关内容