我想在一些书目条目后添加特定的标记,例如上标星号*。
它应该直接出现在参考文献编号之后,并且不应该用逗号分隔(就像普通后缀一样)。
备注:我还需要正常的后缀来给出页码,那么如何在不改变标准行为的情况下实现这一点\cite[prefix][suffix]{citekey}
?
例子:
\documentclass{scrbook}
\begin{filecontents*}{mybib7.bib}
@MISC{Caesar,
author = {Caesar, Gaius J.},
title = {title},
year = {45BC},
}
@MISC{Cicero,
author = {Cicero, Marcus T.},
title = {title},
year = {44BC},
}
\end{filecontents*}
\newcommand{\WW}{\textsuperscript{*}}
\usepackage[natbib=true, style=numeric-comp, backend=bibtex8, defernumbers, useprefix, maxnames=99, maxcitenames=3]{biblatex} % f¸r bessere Literaturverzeichnisse
\renewcommand{\bibfont}{\normalfont\small}
\renewcommand\multicitedelim{\addsemicolon\space}
\usepackage{csquotes}
\bibliography{mybib7}
\begin{document}
\cites[][\WW{}]{Caesar}[][p.~13]{Cicero}
I wish it would look like that: [1\WW{}; 2, p.~13]
\nocite{*}
\printbibliography
\end{document}
答案1
以下是一种方法:
定义一个新的布尔值
citewithstar
(默认为false
)。更改 bibmacro 的定义
cite
,以便在标签编号后添加上标星号(如果citewithstar
是)true
。定义一个宏
\starnext
,将其设置citewithstar
为true
下一个引用键。\starnext
在相应引用命令的 prenote 可选参数中添加。
到目前为止,有一个缺点:\starnext
在第一个/唯一引用键的 prenote 可选参数中添加会产生不必要的额外空格。在这种情况下,请\starnext
在引用命令之前添加(参见我的示例)。
注意:您不必在 postnote 可选参数中使用“p.~13”——biblatex
将假定“13”是页码并应用正确的格式。
\documentclass{article}
\usepackage{biblatex}
\renewcommand*{\multicitedelim}{\addsemicolon\space}
\newbool{citewithstar}
\renewbibmacro*{cite}{%
\printtext[bibhyperref]{%
\printfield{prefixnumber}%
\printfield{labelnumber}%
\ifbool{citewithstar}{\textsuperscript{*}}{}% ADDED
\ifbool{bbx:subentry}
{\printfield{entrysetcount}}
{}}}
\newcommand*{\starnext}{%
\AtNextCitekey{\booltrue{citewithstar}}%
}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@MISC{Caesar,
author = {Caesar, Gaius J.},
title = {title},
year = {45BC},
}
@MISC{Cicero,
author = {Cicero, Marcus T.},
title = {title},
year = {44BC},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\starnext\cites{Caesar}[13]{Cicero}
\cites{Caesar}[\starnext][13]{Cicero}
\printbibliography
\end{document}
如果您想在标签编号后缀中指定符号,则可以使用控制序列代替citewithstar
。
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=numeric-comp,sorting=none]{biblatex}
\usepackage[colorlinks]{hyperref}
\renewcommand*{\multicitedelim}{\addsemicolon\space}
\DeclareFieldFormat{labelnumber}{\mkbiblabelsuffix{#1}}
\newrobustcmd*{\mkbibsuffix}[1]{%
\csgdef{cbx:suffix}{#1}}
\newrobustcmd*{\mkbiblabelsuffix}[1]{%
\ifcsundef{cbx:suffix}
{#1}
{#1\mkbibsuperscript{\csuse{cbx:suffix}}%
\global\csundef{cbx:suffix}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\mkbibsuffix{\dag}\cite[10--15]{companion}
\mkbibsuffix{*}\cites[10--15]{companion}[e.g.\mkbibsuffix{**}][]{ctan}{markey}{knuth:ct}
\mkbibsuffix{\ddag}\cites{companion}{ctan,markey,knuth:ct}
\printbibliography
\end{document}
答案2
可以在后记参数中指定标签编号后缀,但我们需要某种方法将其与实际后记区分开来。
这里我们将后缀括在括号中,并将其放在任何后记之前。可以使用其他分隔符,但不能使用方括号和花括号 - 它们要么干扰引用命令的参数,要么被处理出后记字段。
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=numeric-comp,sorting=none]{biblatex}
\usepackage[colorlinks]{hyperref}
\renewcommand*{\multicitedelim}{\addsemicolon\space}
\renewbibmacro*{postnote}{%
\iffieldundef{postnote}{}{\printfield{postnote}}}
\DeclareFieldFormat{postnote}{\mkpostnote#1\relax}
\makeatletter
\newrobustcmd*{\mkpostnote}{%
\@ifnextchar(%)
{\mkpostnote@i}
{\mkpostnote@i()}}
\def\mkpostnote@i(#1){%
\ifblank{#1}{}{\mkbibsuperscript{#1}}%
\@ifnextchar\relax{}{\mkpostnote@ii}}
\def\mkpostnote@ii#1\relax{%
\postnotedelim%
\mkpageprefix[pagination]{#1}}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\subsection*{Without label number suffix}
\cite[See][]{companion}
\cite[See][10]{companion}
\cite[See][10--15]{companion}
\cite[See][10--15 and the last section]{companion}
\cites[10--15]{companion}[e.g.][]{ctan}[10--15]{markey}[10]{knuth:ct}
\cite[See][]{companion,ctan,markey,knuth:ct}
\subsection*{With label number suffix}
\cite[See][(\dag)]{companion}
\cite[See][(\dag)10]{companion}
\cite[See][(\dag)10--15]{companion}
\cite[See][(\dag) 10--15 and the last section]{companion}
\cites[(*)10--15]{companion}[e.g.][(**)]{ctan}[10--15]{markey}[10]{knuth:ct}
\cites(See)()[(\ddag)]{companion}{ctan,markey,knuth:ct}
\printbibliography
\end{document}
作为参考,以下是同一篇文档的摘录,未对后记格式进行任何更改。