我希望在引用时将上标数字\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}