![JuraBiB 的空白又太多了](https://linux22.com/image/479159/JuraBiB%20%E7%9A%84%E7%A9%BA%E7%99%BD%E5%8F%88%E5%A4%AA%E5%A4%9A%E4%BA%86.png)
后为什么 jurabib 会产生太多空白?已解决 我以为不会有其他问题,但 jurabib 似乎有更多隐藏的秘密,它会在空白处创建空格。请比较此 MWE:
\documentclass[]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage[]{jurabib}
\renewcommand*{\bibatsep}{,}
\begin{filecontents}{literatur.bib}
@BOOK{URH_6,
title = {Urkundenregesten zur Tätigkeit des deutschen Königs- und Hofgerichts bis 1451},
year = {1990},
editor = {Bernhard Diestelkamp},
author = {Friedrich Battenberg},
volume = {6},
series = {Quellen und Forschungen zur h\"ochsten Gerichtsbarkeit im alten Reich},
address = {K\"oln},
howcited = {1},
shorttitle = {URH~6},
volumetitle = {Die K\"onigszeit Karls IV. (1346\,--\,1355~M\"arz)}
}
\end{filecontents}
\begin{document}
Test\footcite{URH_6}.
\bibliography{literatur}
\bibliographystyle{jurabib}
\end{document}
这里哪个命令需要修改?
答案1
您可以尝试\renewcommand\jbedafti[1]{\ignorespaces}
。在您的示例中,它可以工作。但我不能保证它不会在其他地方删除所需的空间。
答案2
乌尔里克·菲舍尔回答可能更容易实现,另一种解决方案是
\renewcommand\jbedafti[1]{\unskip}
但如果您想解决这个问题的根本原因,您可能需要看看jurabib.bst
。
原始文件jurabib.bst
生成.bbl
如下文件
\jbbibargs {\bibnf {Battenberg} {Friedrich} {F.} {} {}\jbtiafed {\bibfnfont
{;} \bibenf {Diestelkamp} {Bernhard} {B.} {} {} \edfont {\editorname}}}
{Friedrich Battenberg} {au} {sexless} {\bibtfont {Urkundenregesten zur
Tätigkeit des deutschen Königs- und Hofgerichts bis 1451}\bibatsep {}
\volumeformat {6} Quellen und Forschungen zur h\"ochsten Gerichtsbarkeit im
alten Reich\bibatsep {} \jbedafti {\edbyname {} Bernhard Diestelkamp,} Die
K\"onigszeit Karls IV. (1346\,--\,1355~M\"arz), \apyformat {K\"oln\bibbdsep
{} 1990}} {\bibhowcited} \jbdoitem {{Battenberg}{Friedrich}{F.}{}{}}
{{Diestelkamp}{Bernhard}{B.}{}{}} {} \bibAnnoteFile {URH_6}
并且在您的设置中\jbedafti
简单地吞下它的单个参数,以便我们最终得到两个空格:一个在其参数之前\jbedafti
,另一个在其参数之后。
可以通过将参数后的空格移到jbedafti
参数中来删除有问题的空格,如下所示
alten Reich\bibatsep {} \jbedafti {\edbyname {} Bernhard Diestelkamp, }Die
为此,我们需要编辑一些副本jurabib.bst
。
在您的机器上查找(在命令行中
jurabib.bst
输入)。kpsewhich jurabib.bst
将文件复制到 BibTeX 可以找到的地方(https://texfaq.org/FAQ-inst-wlcf,与您的文档相同的文件夹就可以了)并将其重命名为
jurabib-sp.bst
。打开
jurabib-sp.bst
并更换author empty$ not editor empty$ not and { "\jbedafti {\edbyname {} " editor * "," * * "} " * } 'skip$ if$
在 ll. 2158-2161
FUNCTION {book}
中author empty$ not editor empty$ not and { "\jbedafti {\edbyname {} " editor * ", }" * * } 'skip$ if$
在文件顶部添加一条简短通知,解释变更内容。包括变更日期和您的姓名。
jurabib.bst
和之间的差异jurabib-sp.bst
大致如下
--- jurabib.bst 2019-12-17 22:42:13.765457300 +0100
+++ jurabib-sp.bst 2019-12-17 22:31:40.788162100 +0100
@@ -1,3 +1,8 @@
+%%%% jurabib-sp.bst for https://tex.stackexchange.com/q/520746/35864
+%%%% 2019-12-17 MW
+%%%% small edit to the usage of \jbedafti
+%%%%
+%%%% the original file is distributed under GPL v2
%%
%% This is file `jurabib.bst',
%% generated with the docstrip utility.
@@ -2156,7 +2161,7 @@
{ format.btitle "title" output.check }
if$
author empty$ not editor empty$ not and
- { "\jbedafti {\edbyname {} " editor * "," * * "} " * }
+ { "\jbedafti {\edbyname {} " editor * ", }" * * }
'skip$
if$
make.translators output
如果你不想执行这些步骤,你可以jurabib-sp.bst
从https://gist.github.com/moewew/b10236c49c6f574e53910e66cde83e57。
然后使用
\bibliographystyle{jurabib-sp}
而不是\bibliographystyle{jurabib}
在您的文档中。
\documentclass[]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage[]{jurabib}
\renewcommand*{\bibatsep}{,}
\begin{filecontents}{\jobname.bib}
@BOOK{URH_6,
title = {Urkundenregesten zur Tätigkeit des deutschen Königs- und Hofgerichts bis 1451},
year = {1990},
editor = {Bernhard Diestelkamp},
author = {Friedrich Battenberg},
volume = {6},
series = {Quellen und Forschungen zur h\"ochsten Gerichtsbarkeit im alten Reich},
address = {K\"oln},
howcited = {1},
shorttitle = {URH~6},
volumetitle = {Die K\"onigszeit Karls IV. (1346\,--\,1355~M\"arz)}
}
\end{filecontents}
\begin{document}
Test\footcite{URH_6}.
\bibliography{\jobname}
\bibliographystyle{jurabib-sp}
\end{document}