仅在参考书目中最后一个参考书目条目后设置句点

仅在参考书目中最后一个参考书目条目后设置句点

我的大学对于参考书目有一些特殊的格式规则:

比赛项目末尾没有句号。只有最后一个项目必须以句号结尾!

它看起来应该是这样的 在此处输入图片描述:)

我用 - 更改了 finentrypoint \renewcommand{\finentrypunct}{},效果很好。但是我如何获取最后一个条目后的句点呢?

我使用 biber。

有人给我建议吗?

答案1

您可以重新定义\defbibenvironment{bibliography}以包含最后一个句点。请注意,这很可能会导致空书目出现问题。

保持\renewcommand{\finentrypunct}{}

将 的定义\defbibenvironment{bibliography}添加\addperiod到 行中{\endlist},因此其内容为。您可以在文件中{\addperiod\endlist}找到 的定义,以符合您的参考书目样式。\defbibenvironment{bibliography}.bbx

因为numeric那是

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
    \printfield{prefixnumber}%
    \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\addperiod\endlist}%<---- here
  {\item}

因为authoryear

\defbibenvironment{bibliography}
  {\list
     {}
     {\setlength{\leftmargin}{\bibhang}%
      \setlength{\itemindent}{-\leftmargin}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}}
  {\addperiod\endlist}%<---- here
  {\item}

平均能量损失

\documentclass[a4paper,12pt]{article}%
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\renewcommand{\finentrypunct}{}
\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
    \printfield{prefixnumber}%
    \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\addperiod\endlist}%<---- here
  {\item}

\begin{document}
  \nocite{wilde,cicero,knuth:ct:a}
  \printbibliography
\end{document}

在此处输入图片描述

答案2

书目输出是在以下定义的环境中完成的

% {<name>}{<start code>}[<end code>]{<item code>}

\newrobustcmd*{\defbibenvironment}[4]{%
  \long\csdef{blx@env@#1}{#2}%
  \long\csdef{blx@endenv@#1}{#3}%
  \long\csdef{blx@item@#1}{#4}}

每种风格都使用这种修改环境的定义。因此,为了满足您的需要,您必须确保将最终期限设置为blx@endenv@#1。这可以通过以下方式全局实现:

\cspreto{blx@endenv@bibliography}{\addperiod}

以下是完整的 MWE:

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{labelnumberwidth}{#1.}
\renewcommand{\finentrypunct}{}
\cspreto{blx@endenv@bibliography}{\addperiod}
\begin{document}
\cite{companion,knuth:ct:a,angenendt}
\printbibliography
\end{document}

在此处输入图片描述

相关内容