使用 biblatex 的 autopunct 选项实现数字样式

使用 biblatex 的 autopunct 选项实现数字样式

我想使用 biblatex 的 autopunct 选项自动将带括号的引用移到标点符号内。例如,我想blah blah.\autocite{smith}将其渲染为“blah blah1。”而不是“等等等等。”1“。如果我使用上标样式,它就会起作用:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage[american]{babel}
\usepackage[style=american]{csquotes}
\usepackage[autocite=superscript,autopunct=true]{biblatex}
\addbibresource{refs.bib}

\begin{document}

Test citation inside punctuation \autocite{smith}.
Test citation outside punctuation.\autocite{smith}

\printbibliography
\end{document}

在此处输入图片描述

但是,更改autocite=superscriptautocite=numeric会失去自动标点行为:

在此处输入图片描述

答案1

biblatex我担心,在的行为框架内,这是不可能的autopunct

biblatex文档解释该autopunct选项如下(§3.1.2.1 序言选项 > 常规,第 50 页)

此选项控制引用命令是否提前扫描标点符号。

这里重要的是向前扫描:该autopunct功能只能影响\autocite命令后面的标点符号。

所以

punctuation.\autocite{sigfridsson}

不属于此功能的范围,并且永远不会更改。只有

punctuation \autocite{sigfridsson}.

可以改变。


以下是如何实现将引用移到句号/外部标点符号后的相反行为:使用可选<position>参数\DeclareAutoCiteCommand

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage[american]{babel}
\usepackage[style=american]{csquotes}
\usepackage[autocite=inline, autopunct=true]{biblatex}

\DeclareAutoCiteCommand{inline}[l]{\parencite}{\parencites}

\addbibresource{biblatex-examples.bib}

\begin{document}
Test citation inside punctuation \autocite{sigfridsson}.
Test citation outside punctuation.\autocite{sigfridsson}

\printbibliography
\end{document}

测试标点符号内的引用。[1] 测试标点符号外的引用。[1]

相关内容