Biber/BibLaTeX - 如何在 \parencite's-[post]-bracket 内自动插入小空格?示例:(参见 Doe,1998,第25)

Biber/BibLaTeX - 如何在 \parencite's-[post]-bracket 内自动插入小空格?示例:(参见 Doe,1998,第25)

想象一个普通人哈佛引文使用\parencite函数来设置样式:

应用程序处于初始状态...

\parencite[pre][post]{authorID}

... 在实际中,会这样使用...

\parencite[cf.][p. 25]{Doe}

...并产生如下结果:

(参见 Doe,1998,第 25 页)


是否可以减少p.[post] 括号内的页面符号和页码25(也位于同一括号内)之间的间距?大多数人可能只需按下键盘上的空格键即可轻松插入空格。

不幸的是,我认为这个大空间看起来真的不美观......


一个(更糟糕的)选择是引用如下:

\parencite[cf.][p.\addnbthinspace 25]{Doe}

另外一个(更糟糕的)选择是引用如下:

\parencite[cf.][p.{\,}25]{Doe}


最小工作示例(MWE):

% ==== PREAMBEL =============================================================

\documentclass{scrbook}

\usepackage[
            backend=biber,
            citestyle=numeric,
            style=authoryear,
            natbib=true,
        ]{biblatex}

\usepackage{filecontents}

% ==== BIBLIOGRAPHY ========================================================

\begin{filecontents}{\jobname.bib} 

    @book{Doe,
        author = {Doe, Jon},
        title = {How to cite a literature-entry in a beautiful way},
        date = {1998},
    }

\end{filecontents}

\bibliography{\jobname} 

% ==== DOCUMENT ============================================================

\begin{document}

\chapter{For the friends of typography}

    For generating the following citations, the \textbackslash parencite-function was used:\\
    \textbackslash parencite[cf.][p. 25]$\{Doe\}$.

    \bigskip    

    This is a text with an ugly look because of the big space between the letter \textbf{p.}\\
    and the \textbf{pagenumber} \parencite[cf.][p. 25]{Doe}.

    \bigskip

    This is a text with a beautiful look because of the small space between the letter \textbf{p.}\\
    and the \textbf{pagenumber} \parencite[cf.][p.{\,}25]{Doe}.

    \bigskip

    This is a text with a beautiful look because of the small space between the letter \textbf{p.}\\
    and the \textbf{pagenumber} \parencite[cf.][p.\addnbthinspace 25]{Doe}.

\end{document}

初始状态截图:

在此处输入图片描述


最终(期望)状态的屏幕截图:

在此处输入图片描述


最后一个问题:

有没有办法可以自动将此空间设置为较小的距离(例如\addnbthinspace),而无需将代码放在命令的输入字段内\parencite?这对于源代码的清洁度确实更好(以及引用过程的加速)...

非常感谢您的帮助!

答案1

如果您让其biblatex自行处理分页,那么您想要的就非常简单了。包含数字(和一些其他特殊符号)的附注会被自动识别为页面(范围)并按此格式进行格式化biblatex

因此,引用时最好完全删除页面前缀,例如

\parencite[24]{worman} and \parencite[cf.][17--19]{geer}

biblatex如果有多个页面,则会自动添加必需的“p.”或“pp.”。此外,这将使您的代码更加简洁。

默认情况下,页码前缀和页码之间的空格是不间断空格,但我们可以使用以下命令轻松将其变成细空格:

\renewcommand*{\ppspace}{\addnbthinspace}

另请参阅biblatex文档,第 194 页,有关部分\mkpageprefix

还有\sqspace控制后续标记和页码如“第 14 页起”。

平均能量损失

\documentclass{article}
\usepackage[backend=biber, style=authoryear, natbib]{biblatex}

\addbibresource{biblatex-examples.bib} 

\renewcommand*{\ppspace}{\addnbthinspace}

\begin{document}
  \parencite[24]{worman} and \parencite[cf.][17--19]{geer}

  \parencite[p.\addnbthinspace 24]{worman} and \parencite[cf.][pp.\addnbthinspace 17--19]{geer}

  \parencite[p. 24]{worman} and \parencite[cf.][pp. 17--19]{geer}
\end{document}

在此处输入图片描述

相关内容