我目前正在为历史博士论文在 biblatex 中确定引文样式。要求的引文样式有时有点...奇怪。这导致我遇到以下问题:
所有引文在脚注中的引用与参考书目中的引用几乎相同。默认情况下,这些引文以句号结尾,即\finentrypunct
其默认值。现在,假设我有一个引用命令,例如
\cites{LitA}{LitB}
当前的行为是这样的引用
Author A: Some interesting book, Somewhere 2016. Author B: Another even more interesting book, Somewhere else 2005.
我想存档的\finentrypuct
只是在这些情况下用分号替换,即我想得到
Author A: Some interesting book, Somewhere 2016; Author B: Another even more interesting book, Somewhere else 2005.
我知道我可以重新定义\multicitedelim
,但是这会使我在句号后留下一个分号,而且我认为没有办法预先删除句号。
有任何想法吗?
答案1
如果您只是\finentrypunct
通过直接调用\finentrypunct
(或\finentry
执行\finentrypunct
)来排版,就会出现此问题。一旦排版了标点符号,就没有简单的方法可以将其删除。
现在,最简单的biblatex
解决方案是放置\finentrypunct
一个\setunit
-,就像大多数标点符号一样。但是,这不会正常工作,因为我们无法保证biblatex
在 之后打印一些内容\setunit
。如果没有,那么标点符号就会丢失。
标准样式通过简单地不使用\finentrypunct
引用来解决此问题。
针对您的自定义风格的解决方案就是执行相同的操作。
- 不要在引用命令中使用
\finentrypunct
(或)。\finentry
- 然后设置
\renewcommand*{\multicitedelim}{\addsemicolon\space}
最后,使用包装器将句号放在最后一个引用之后。这反映了
\bibfootnotewrapper
和朋友们的做法。- 定义
\newcommand*{\citepunctwrapper}[1]{#1\addperiod}
用作
\cite
包装器\DeclareCiteCommand{\cite}[\citepunctwrapper] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite}} {\multicitedelim} {\usebibmacro{postnote}}
以及
\cites
\DeclareMultiCiteCommand{\cites}[\citepunctwrapper]{\cite}{\multicitedelim}
- 定义
平均能量损失
\documentclass{article}
\usepackage[backend=biber, style=verbose]{biblatex}
\addbibresource{biblatex-examples.bib}
\renewcommand*{\multicitedelim}{\addsemicolon\space}
\newcommand*{\citepunctwrapper}[1]{#1\addperiod}
\DeclareCiteCommand{\cite}[\citepunctwrapper]
{\usebibmacro{prenote}}%
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareMultiCiteCommand{\cites}[\citepunctwrapper]{\cite}{\multicitedelim}
\begin{document}
\cites{sigfridsson}{worman}
\end{document}