biblatex:是否可以在参考编号后直接添加文本(不带逗号)?

biblatex:是否可以在参考编号后直接添加文本(不带逗号)?

我想在一些书目条目后添加特定的标记,例如上标星号*。

它应该直接出现在参考文献编号之后,并且不应该用逗号分隔(就像普通后缀一样)。

备注:我还需要正常的后缀来给出页码,那么如何在不改变标准行为的情况下实现这一点\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,将其设置citewithstartrue下一个引用键。

  • \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}

在此处输入图片描述

作为参考,以下是同一篇文档的摘录,未对后记格式进行任何更改。

在此处输入图片描述

相关内容