biblatex:德语短日期格式(带句点)-删除句点后不需要的额外空格

biblatex:德语短日期格式(带句点)-删除句点后不需要的额外空格

德语短日期中的每个句号(以及urldate所有其他的date)后面都有一个小空格biblatex

平均能量损失

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{literature.bib}
  @online{foobar,
    url = {https://www.foo.bar},
    date = {2019-09-24},
    urldate = {2019-09-24},
  }
\end{filecontents}

\usepackage[ngerman]{babel}
\usepackage{url}
\usepackage[date=short]{biblatex}
\bibliography{literature.bib}

\begin{document}
  \nocite{foo,foobar}
  \printbibliography
\end{document}

为什么?我该如何摆脱它?

答案1

\thinspace德语短日期中的每个句号后面确实都有一个biblatex。它是故意插入的german.lbx

  \protected\def\mkbibdateshort#1#2#3{%
    \iffieldundef{#3}
      {}
      {\mkdayzeros{\thefield{#3}}\adddot
       \iffieldundef{#2}{}{\thinspace}}%
    \iffieldundef{#2}
      {}
      {\mkmonthzeros{\thefield{#2}}%
       \iffieldundef{#1}
         {}
         {\iffieldundef{#3}{/}{\adddot\thinspace}}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%

发现这一点后,我在 biblatex 文档中搜索它,但没有成功。然后我在这里搜索并发现了以下内容: isodata 中的错误?:德语短日期句号后有水平空格。因此,该包isodate似乎做了同样的事情。

Ulrike Fischer 建议我查看一下文档,所以我就这么做了。结果如下:

德语数字格式的间距(24. 12. 2000 和 24. 12. 00)取自 Duden [2],并且是使用德语衍生词之一时的默认设置。[...]

参考

[2] DUDEN Band 1. 德语法律文书。 21. Auflage,Dudenverlag,曼海姆,德国,1996年。

我在网上没有找到类似的建议https://duden.de,我也不喜欢这种间距。

为了摆脱它,只需重新定义\mkbibdateshortfrom german.lbx

平均能量损失

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{literature.bib}
  @online{foobar,
    url = {https://www.foo.bar},
    date = {2019-09-24},
    urldate = {2019-09-24},
  }
\end{filecontents}

\usepackage[ngerman]{babel}
\usepackage{url}
\usepackage[date=short]{biblatex}
\bibliography{literature.bib}

\DefineBibliographyExtras{ngerman}{% from german.lbx
  \protected\def\mkbibdateshort#1#2#3{%
  \iffieldundef{#3}
  {}
  {\mkdayzeros{\thefield{#3}}\adddot
    \iffieldundef{#2}{}{}}%<-\thinspace removed
  \iffieldundef{#2}
  {}
  {\mkmonthzeros{\thefield{#2}}%
    \iffieldundef{#1}
    {}
    {\iffieldundef{#3}{/}{\adddot}}}%<-\thinspace removed
  \iffieldbibstring{#1}
  {\bibstring{\thefield{#1}}}
  {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
}

\begin{document}
  \nocite{foo,foobar}
  \printbibliography
\end{document}

如果这变得更容易的话,那不是很棒吗?

相关内容