如何在 bibtex 中“删除”作者和分号之间的空格

如何在 bibtex 中“删除”作者和分号之间的空格

我创建了我的书目,但是在作者和分号之间出现了不需要的空格,如下所示:

Author1[space1];[space2]author2;[...]

在此处输入图片描述 我想要的是这样的:

Author1;[space2]author2;[...]

到目前为止的代码如下:

\documentclass[ 
            a4paper, 
            11pt, 
            parskip=half,
            twoside,
            openright,
            pointlessnumbers,
            headsepline,
            bibtotoc,
            DIV=15,
            BCOR=1cm
            ]
{scrbook}
[...]

\usepackage{hyperref}
\hypersetup{
linktocpage,
colorlinks=true,
citecolor=black,
linkcolor=black,
urlcolor=black
}
[...]
\bibliographystyle{alphadin}

如果它有助于 [AE06] 的 Bibtex 条目:

@article{arbinger2006designing,
  title={Designing with an embedded soft-core processor},
  author={Arbinger, Don and Erdmann, Jeremy},
  journal={Embedded cracking the code to systems development},
  year={2006}
}

那么我该如何“删除”这个额外的空间?我希望你能帮助我解决这个问题。

答案1

alphadin实施规范DIN 1505-2,现在已被(稍微不那么可怕的)取代(德国标准) ISO 690DIN 1505-2 使用分号(以及短划线和斜线)并在前导和后导空格。在这方面,该规范不符合德国传统,德国传统从不在分号前放置空格,但它也不完全符合法国传统,因为它不在冒号前放置空格。

该行为是硬编码的alphadin.bst,必须通过修改.bst文件来手动更改。

  1. 在您的机器上找到您想要更改的样式。您可以通过kpsewhich alphadin.bst在终端中输入来找到文件路径。如果失败,请从 CTAN 获取文件:https://ctan.org/tex-archive/biblio/bibtex/contrib/german/din1505

  2. 将文件复制到 LaTeX 可以找到它的地方(https://texfaq.org/FAQ-inst-wlcf) – 当前文档的目录就可以了 – 然后重命名。许多 LaTeX 文件都要求您在其许可条款中重命名文件。但即使许可条款没有明确说明这一点,或者不要求您重命名已更改的文件,重命名已更改的文件也是非常好的做法。假设新名称是alphadin-nospace.bst

  3. " ; "在文件中查找所有六次出现的并将其替换为"; "。在我的副本中,相关行是

    • 408
    • 415
    • 449
    • 483
    • 502
    • 1199
  4. 理想情况下,你应该在文件顶部放置一个关于更改的简短通知、你的姓名和日期。

  5. 保存修改并重命名的文件。

  6. 在您的文档中使用\bibliographystyle{alphadin-nospace}而不是。\bibliographystyle{alphadin}

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{arbinger2006designing,
  title   = {Designing with an embedded soft-core processor},
  author  = {Arbinger, Don and Erdmann, Jeremy},
  journal = {Embedded cracking the code to systems development},
  year    = {2006},
  volume  = {14},
  pages   = {76-89},
}
\end{filecontents}

\documentclass{article}
\bibliographystyle{alphadin-nosp}
\begin{document}
\cite{arbinger2006designing}
\bibliography{\jobname}
\end{document}

“Arbinger, Don;Erdmann, Jeremy:使用嵌入式软核处理器进行设计。在:嵌入式破解系统开发代码 14(2006 年),第 76–89 页”,分号前没有空格。


自从米科给了同样的答案就在一分半钟前,让我试着用一点广告来证明这个答案的存在biblatex

如上所述,DIN 1505-2 已被 ISO 690 取代,因此继续使用alphadin或任何其他样式都没有多大意义din1505适用于新文档。(当然,除非您非常非常喜欢该样式所呈现的效果。)

可以使用 实现类似的风格biblatex,对于这种小改动,它的灵活性要高得多。参见bibtex 与 biber 以及 biblatex 与 natbib 的比较要切换到 biblatex 该怎么做?Biblatex 与 Biber:配置我的编辑器以避免未定义的引用自定义 biblatex 样式的指南欲了解更多有关 的介绍性帖子biblatex

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{arbinger2006designing,
  title   = {Designing with an embedded soft-core processor},
  author  = {Arbinger, Don and Erdmann, Jeremy},
  journal = {Embedded cracking the code to systems development},
  year    = {2006},
  volume  = {14},
  pages   = {76-89},
}
\end{filecontents}

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=alphabetic]{biblatex}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareNameAlias{sortname}{family-given}

\DeclareDelimFormat{multinamedelim}{\addsemicolon\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\renewcommand*{\mkbibnamefamily}{\textsc}

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1\isdot}

\addbibresource{\jobname.bib}

\begin{document}
\cite{arbinger2006designing}
\printbibliography
\end{document}

Arbinger, Don;Erdmann, Jeremy。使用嵌入式软核处理器进行设计。收录于:嵌入式破解系统开发代码 14 (2006),第 76–89 页。

答案2

作者(或编辑)姓名与分号之间的空格似乎是设计特点,而不是alphadin参考书目样式的缺陷。也就是说,我能够在文件中找到不少于六个 [6!] 个实例" ; ":函数中有 2 个format.names,函数format.editorsformat.authors.organizationformat.editors.organization和中各有 1 个format.crossref.editor

话虽如此,但绝对奇怪的是,编码字符串没有给出为"~; "。使用~before;会禁止在分号前立即换行。允许在分号前立即换行肯定是印刷错误。

如果你更喜欢不是要在分号前有空格,我建议您按如下方式操作:

  • 在您的 TeX 发行版中找到该文件alphadin.bst。复制此文件并将副本命名为 。alphadin-mod.bst(不要直接编辑 TeX 发行版的原始文件。)

  • 在文本编辑器中打开文件alphadin-mod.bst。你用来编辑 tex 文件的程序就可以了。

  • 进行全局搜索和替换,更改" ; ""; "。总共六个实例应受到影响。

  • 将文件保存alphadin-mod.bst在主 tex 文件所在的目录中或 BibTeX 搜索的目录中。如果选择第二个选项,请确保适当更新 TeX 发行版的文件名数据库。

  • 在主 tex 文件中,将指令更改\bibliographystyle{alphadin}\bibliographystyle{alphadin-mod}并执行完整的重新编译循环:LaTeX、BibTeX,然后再执行两次 LaTeX。

祝您 BibTeX 愉快!


在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@misc{ae:06,
  title={Thoughts},
  author={Arbinger, Don and Erdmann, Jeremy},
  year={2006}
}
\end{filecontents}

\documentclass{scrbook}
\bibliographystyle{alphadin-mod}
\begin{document}
\cite{ae:06}
\bibliography{mybib}
\end{document}

相关内容