BibLaTeX 的 supercite 上标引用标点符号上方

BibLaTeX 的 supercite 上标引用标点符号上方

我希望在引用时将上标数字\autocite{}放在标点符号上方(仅限逗号或句号;显然它无法与感叹号或引号一起正常使用),而不是旁边。我在Siarhei Khirevich 的网站根据上标和标点并且很喜欢最终的结果。

实现该目标的最佳/最简单方法是什么(理想情况下无需使用新命令代替)\autocite?附加问题:该\footnote命令及其引用是否也可以实现相同的目标?

平均能量损失

测试.tex

\documentclass[parskip=half]{scrartcl}

\usepackage[autocite=superscript]{biblatex}
\addbibresource{test.bib}

\begin{document}

This is not the greatest example in the world---this is just a tribute.\autocite{A01}

The peculiar thing is this, my friend, the greatest example doesn't actually look anything like this one\autocite{B02}.

\printbibliography

\end{document}

测试文件

@book{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@book{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}

输出

屏幕截图显示参考编号位于句号旁边,而不是顶部

答案1

这是一个使用 的自动标点功能的解决方案\autocite。这意味着它只能用于\autocite而不能用于\footcite。对 执行此操作并不太难\footcite,但需要在内部进行更多工作(另请参阅https://github.com/plk/biblatex/issues/733- 公平地说,这个解决方案已经对内部进行了足够的干扰)。 此处的代码适用于autocite=superscript,但相同的策略也可以应用于autocite=footnote

您可以定义哪些标点符号的后续脚注会随 一起移动\DeclareFootnoteMovePunct。在下面的示例中,只有.,的脚注会按照 的定义移动\DeclareFootnoteMovePunct{.,{,}}。带星号的版本\DeclareFootnoteMovePunct*会在添加新标点符号之前重置标点符号列表,而无星号的版本\DeclareFootnoteMovePunct始终会将其参数附加到现有列表中。

脚注不会移动标点符号的准确长度,而只会移动 80%。您可以根据需要调整此值。

\documentclass[parskip=half]{scrartcl}

\usepackage[autocite=superscript]{biblatex}
\addbibresource{biblatex-examples.bib}

\makeatletter
\newcommand*{\blx@fnpct@movefor}{}
\newcommand*{\DeclareFootnoteMovePunct}{%
  \@ifstar
    {\let\blx@fnpct@movefor\@empty}
    {}
  \blx@def@fnpct@movefor}
\newcommand*{\blx@def@fnpct@movefor}{%
  \def\do##1{\blx@thecheckpunct{\listadd{\blx@fnpct@movefor}}##1}%
  \docsvlist}

\DeclareFootnoteMovePunct{.,{,}}

\newlength{\blx@fnpct@movelength}
\newcommand*{\blx@fnpct@footnotemover}[1]{%
  #1%
  \ifinlist{#1}{\blx@fnpct@movefor}
    {\settowidth{\blx@fnpct@movelength}{#1}%
     \hspace{-.8\blx@fnpct@movelength}}
    {}%
}

\protected\csedef{blx@acitei@superscript}#1#2#3#4#5{%
  \begingroup
  \blx@citeinit
    \noexpand\blx@fnpct@footnotemover{#5}%
    \blxcitecmd{supercite#1}{#2}{#3}{#4}{}%
  \endgroup}%
\protected\csedef{blx@macitei@superscript}#1#2#3{%
  \noexpand\blx@fnpct@footnotemover{#3}%
  #1{#2}%
  \endgroup}
\makeatother


\begin{document}
Lorem\autocite{sigfridsson}.

Ipsum\autocite{nussbaum,worman}.

Lorem\autocite{sigfridsson}, ipsum.
Dolor\autocite{sigfridsson}!

Lorem\autocite{worman} ipsum dolor sit amet. Ipsum\autocite{nussbaum}foo.

\printbibliography
\end{document}

在此处输入图片描述

相关内容