![如何删除 biblatex 中日期分隔符之间的空格(样式 footnote-dw)](https://linux22.com/image/319361/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%20biblatex%20%E4%B8%AD%E6%97%A5%E6%9C%9F%E5%88%86%E9%9A%94%E7%AC%A6%E4%B9%8B%E9%97%B4%E7%9A%84%E7%A9%BA%E6%A0%BC%EF%BC%88%E6%A0%B7%E5%BC%8F%20footnote-dw%EF%BC%89.png)
如果我使用 biblatex 的样式footnote-dw
和德语文本选项date=short
,日期的日、月、年会用空格分隔,但事实并非如此。
以下是 MWE:
\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{ebel1992,
author = {Martin Ebel},
title = {Ein Lesemarathon und der Wunsch nach mehr: Der 16. Klagenfurter (30.06.1992) Wettbewerb um den »Ingeborg-Bachmann-Preis«},
date = {1992-06-30},
howpublished = {in: Badische Zeitung},
type = {Nr. 148},
addendum = {S. 8},
keywords = {presse},
}
\end{filecontents}
%%% Bibliographie
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[%
style=footnote-dw,%
date=short,%
bibencoding=utf8,%
backend=biber%
]{biblatex}
\addbibresource{\jobname.bib}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
Foo\cite{ebel1992}
\end{document}
这将创建以下脚注。请注意顶部的额外日期,这是我手动添加的,以显示日期应有的样子。
有人知道要做什么才能摆脱这些多余的空间吗?
答案1
我想我找到了解决这个问题的方法(感谢这篇文章这里)。必须将其添加到 biblatex 定义的文档序言中并覆盖默认设置:
%%% Fix um zwischen Tag/Monat und Monat/Jahr kein Leerzeichen zu setzen
\DefineBibliographyExtras{ngerman}{%
\protected\def\mkbibdateshort#1#2#3{%
\iffieldundef{#3}
{}
{\mkdatezeros{\thefield{#3}}\adddot
%%% Kein Abstand zwischen Tag und Monate
\iffieldundef{#2}{}{}}%
\iffieldundef{#2}
{}
{\mkdatezeros{\thefield{#2}}%
\iffieldundef{#1}
{}
%%% Kein Abstand zwischen Monat und Jahr
{\iffieldundef{#3}{/}{\adddot}}}%
\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}
{\mkdatezeros{\thefield{#1}}}}}%
如果有人知道“更清洁”的选项,请告诉我。
答案2
数字之间的空格在印刷上似乎是正确的(请参阅维基百科历法日期和schmales 阅读)。但是,对我来说,它看起来也很不习惯。由于似乎我暂时还不能在这里发表评论,我想提一下 diff 作为一个新的答案,它会对您的代码片段进行更改,但如果想要在整个系统范围内更改此行为,则可以使用它:
diff --git a/tex/latex/biblatex/lbx/german.lbx b/tex/latex/biblatex/lbx/german.lbx
--- a/tex/latex/biblatex/lbx/german.lbx
+++ b/tex/latex/biblatex/lbx/german.lbx
@@ -28,13 +28,13 @@
\iffieldundef{#3}
{}
{\mkdatezeros{\thefield{#3}}\adddot
- \iffieldundef{#2}{}{\thinspace}}%
+ \iffieldundef{#2}{}{}}%
\iffieldundef{#2}
{}
{\mkdatezeros{\thefield{#2}}%
\iffieldundef{#1}
{}
- {\iffieldundef{#3}{/}{\adddot\thinspace}}}%
+ {\iffieldundef{#3}{/}{\adddot}}}%
\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\mkdatezeros{\thefield{#1}}}}%
\savecommand\lbx@lfromlang
\savecommand\lbx@sfromlang
编辑(不同格式的代码的含义):
它包含从第 28 行开始的 13 行文件german.lbx
,并显示以 为前缀的行-
被以 为前缀的行替换+
(\thinspace
删除了 )。它还可以用于german.lbx
通过以下方式以编程方式更改文件:修补实用程序,例如在Linux上。