引用样式:页码标点

引用样式:页码标点

请看以下\autocite示例:

\autocite[15]{kant}

伊曼纽尔·康德:哈茨山自由公园,第 15 页。

我怎样才能将逗号改为句号?对于参考书目来说,这很容易。我可以使用:

\renewcommand*{\bibpagespunct}{\addperiod\addspace}

但对于引用呢?

答案1

从技术上讲,biblatex不会在那里打印页面信息,而是postnote。因此我们必须修改\postnotedelim

\renewcommand*{\postnotedelim}{\addperiod\space}

为了防止biblatex句号后的“p.”大写,我们可以采用

\renewcommand*{\postnotedelim}{\addperiod\space\midsentence}

或者

\renewcommand*{\postnotedelim}{\adddot\space}

示例代码

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[style=authoryear]{biblatex}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}

\renewcommand*{\postnotedelim}{\addperiod\space\midsentence}
\begin{document}
  \autocite[15]{cicero}
\end{document}

更复杂的解决方案是,如果后注仅包含页面信息,则仅打印句点,否则会添加标准分隔符。

\renewbibmacro*{postnote}{%
  \iffieldundef{postnote}
    {}
    {\iffieldpages{postnote}
       {\setunit{\addperiod\space\midsentence}}
       {\setunit{\postnotedelim}}%
     \printfield{postnote}}}

\renewbibmacro*{multipostnote}{%
  \iffieldundef{multipostnote}
    {}
    {\iffieldpages{postnote}
       {\addperiod\space\midsentence}
       {\postnotedelim}%
     \printfield{multipostnote}}}

代码

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[style=authoryear]{biblatex}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}

\renewbibmacro*{postnote}{%
  \iffieldundef{postnote}
    {}
    {\iffieldpages{postnote}
       {\setunit{\addperiod\space\midsentence}}
       {\setunit{\postnotedelim}}%
     \printfield{postnote}}}

\renewbibmacro*{multipostnote}{%
  \iffieldundef{multipostnote}
    {}
    {\iffieldpages{postnote}
       {\addperiod\space\midsentence}
       {\postnotedelim}%
     \printfield{multipostnote}}}

\begin{document}
  \autocite[15]{cicero}
\end{document}

两者都给予

(西塞罗 1995 年,第 15 页)

相关内容