我的参考书目列表中有一本书和两本该书的译本。每本书都有一条注释,引用了另一本译本。为此,我使用了字段\parencite
中的命令note
。
如果我使用该authoryear-icomp
样式,注释中会出现杂散;
;如图所示。使用该authoryear
样式不会发生这种情况。
我该怎么做才能删除不需要的;
?
\documentclass{article}
% \usepackage[style=authoryear]{biblatex}
\usepackage[style=authoryear-icomp]{biblatex}
\usepackage{filecontents}
\addbibresource{biblio.bib}
\begin{filecontents}{biblio.bib}
@book {b11,
MRKEY = {MR0113788},
AUTHOR = {Bourbaki, Nicolas},
TITLE = {Éléments d'histoire des mathématiques},
SERIES = {Histoire de la Pensée, IV},
PUBLISHER = {Hermann, Paris},
YEAR = {1960},
PAGES = {277},
MRCLASS = {01.00},
MRNUMBER = {0113788},
MRREVIEWER = {C. J. Scriba},
note = {Também disponivel em Inglês em \parencite{b11en} e Espanhol em \parencite{b11es}},
}
%%%%
@book {b11en,
AUTHOR = {Bourbaki, Nicolas},
title = {Elements of the History of Mathematics},
isbn = {9783540647676},
lccn = {98039221},
url = {http://dx.doi.org/10.1007/978-3-642-61693-8},
year = {1998},
PAGES = {301},
publisher = {Springer-Verlag},
address = {Berlin Heidelberg},
note = {Traduzido por J. Meldrum do original em Francês \parencite{b11}, também disponivel em Espanhol em \parencite{b11es}},
}
%%%%
@book {b11es,
AUTHOR = {Bourbaki, Nicolas},
title = {Elementos de historia de las mathemáticas},
isbn = {84-206-2018-1},
year = {1972},
PAGES = {401},
publisher = {Alianza Editorial},
address = {Madrid},
note = {Traduzido por Jesús Hernández do original em Francês \parencite{b11}, também disponivel em Inglês em \parencite{b11en}},
}
%%%%
\end{filecontents}
\begin{document}
\pagestyle{empty}
\parencite{b11}
\nocite{*}
\printbibliography{}
\end{document}
答案1
biblatex
的标点符号跟踪器被这种“嵌套”所困扰。您只会在 中看到这种情况authoryear-icomp
,因为该样式比 更依赖于跟踪器authoryear
。
特别是authoryear-icomp
命令\cite
通常会使标点缓冲区保持非空状态,以便正确处理\multicitedelim
(\compcitedelim
另请参阅我的回答biblatex:\DeclareCiteCommand 在 \printfield 和 \printnames 之间添加分号,但只是有时)。这在通常情况下不是问题,因为\cite
在执行其工作之前会清除标点符号缓冲区。\cite
但是,如果在参考书目上下文中调用,它不会清除缓冲区以避免干扰周围的标点符号。
和
\makeatletter
\protected\def\blx@citecmdinit{%
\blx@leavevmode@cite
\blx@initunit}
\makeatother
\cite
您可以稍微改变参考书目中的命令的行为,以便它们不相信它们已经打印了一些内容。
如果你想更加小心,可以定义一个特殊的命令来为有问题的\parencite
命令添加前缀
\makeatletter
\newcommand*{\mkbibcitesafe}{\blx@initunit}
\makeatother
并在note
note = {Traduzido por Jesús Hernández do original em Francês \parencite{b11},
também disponivel em Inglês em \makebibcitesafe\parencite{b11en}},
您可能想看一下提供链接多个参考书目条目related
的功能。这通常比在字段中使用命令更可取,因为在字段中使用命令可能会出错(如此处所示)。biblatex
\cite
.bib