\cite 内的 Biblatex 换行符

\cite 内的 Biblatex 换行符

我目前遇到了一些与引文换行有关的问题。我正在使用带有 biber 后端的 biblatex。

配置:

\usepackage[hidelinks,breaklinks]{hyperref} 
\usepackage{csquotes}
\usepackage[backend=biber, 
style=alphabetic,
natbib=true, 
hyperref=true, 
]{biblatex}

大多数情况下,当我创建这样的引用\cite[354]{reference1}并且它到达一行的末尾时,就会很好地插入一个换行符:

应该如何

但是,有时换行会失败。命令是\cite[270]{reference2}

有时情况是这样的

它似乎与句子中引用的位置无关。我已经看到了一些 相似的 问题但我无法找到可行的解决方案。我是否遗漏了什么?


梅威瑟:

\documentclass[parskip=half,12pt]{scrreprt}
\usepackage[a4paper, margin=2.54cm, marginparwidth=2.0cm, footskip=1.0cm]{geometry}
\usepackage{mathptmx}
\usepackage{filecontents}
\begin{filecontents}{abc.bib}
    @book{xyz,
        title={Iasd},
        author={Kersten, X. and Bjhsdfojgf, A.D. and HBjdsf, J. and Sjkvhds, K.W.},
        year={2013},
    }
\end{filecontents}
\usepackage[backend=biber, 
style=alphabetic,
natbib=true, 
hyperref=true, 
]{biblatex}
\addbibresource{abc.bib}
\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed dm nonumlllllllllllll \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 

Pino dfgdfgfdgfgfgfgf sdsdsds den dfgdfgfgfgfgfg eines Datensatzes irreversibel \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 
\end{document}

结果:

在此处输入图片描述

可以使用 解决这个问题margin=2.57cm,但这会导致文档的其他换行符失败。除此之外,我想获取我的文档设置,因为它们来自统一模板。有没有更干净的解决方案?

答案1

换行是一个非常微妙、脆弱和复杂的问题。如果您的换行有问题,我建议您按此处列出的顺序尝试以下解决方案。

包裹microtype通常可以帮助解决换行符和其他微排版功能。它无法解决所有问题,但 MWE 中的问题它可以很好地解决。

\documentclass[parskip=half,12pt]{scrreprt}
\usepackage[a4paper, margin=2.54cm, marginparwidth=2.0cm, footskip=1.0cm]{geometry}
\usepackage{mathptmx}
\usepackage{microtype}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
    @book{xyz,
        title={Iasd},
        author={Kersten, X. and Bjhsdfojgf, A.D. and HBjdsf, J. and Sjkvhds, K.W.},
        year={2013},
    }
\end{filecontents*}
\usepackage[backend=biber, 
style=alphabetic,
]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed dm nonumlllllllllllll \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 

Pino dfgdfgfdgfgfgfgf sdsdsds den dfgdfgfgfgfgfg eines Datensatzes irreversibel \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 
\end{document}

在此处输入图片描述

然后,您可以重新措辞您的句子或重新排列您的文本,以便之后的换行符看起来不错。

如果microtype无法帮助您并且您不想重新排列文本,您可能不得不求助于更多临时解决方案。

您可以通过 允许额外的拉伸空间\emergencystretch。您可能需要在 MWE 中试验该值

\setlength{\emergencystretch}{2pt}

效果很好。另请参阅\fussy、\sloppy、\emergencystretch、\tolerance、\hbadness 是什么意思?暂时增加空间大小的限制?如何使用 \sloppy 获取一些参考?

\documentclass[parskip=half,12pt]{scrreprt}
\usepackage[a4paper, margin=2.54cm, marginparwidth=2.0cm, footskip=1.0cm]{geometry}
\usepackage{mathptmx}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
    @book{xyz,
        title={Iasd},
        author={Kersten, X. and Bjhsdfojgf, A.D. and HBjdsf, J. and Sjkvhds, K.W.},
        year={2013},
    }
\end{filecontents*}
\usepackage[backend=biber, 
style=alphabetic,
]{biblatex}
\addbibresource{\jobname.bib}    

\setlength{\emergencystretch}{2pt}

\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed dm nonumlllllllllllll \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 

Pino dfgdfgfdgfgfgfgf sdsdsds den dfgdfgfgfgfgfg eines Datensatzes irreversibel \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 
\end{document}

在此处输入图片描述

更高的\emergencystretch可以按照以下建议进行本地更改本地设置 \emergencystretch 的环境

\newenvironment{emergency}[1]{%
  \par
  \setlength{\emergencystretch}{#1}%
}{%
  \par
}

然后,您用合适的长度将环境包裹emergency在出现中断问题的段落周围的论点中。

\documentclass[parskip=half,12pt]{scrreprt}
\usepackage[a4paper, margin=2.54cm, marginparwidth=2.0cm, footskip=1.0cm]{geometry}
\usepackage{mathptmx}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
    @book{xyz,
        title={Iasd},
        author={Kersten, X. and Bjhsdfojgf, A.D. and HBjdsf, J. and Sjkvhds, K.W.},
        year={2013},
    }
\end{filecontents*}
\usepackage[backend=biber, 
style=alphabetic,
]{biblatex}
\addbibresource{\jobname.bib}

\newenvironment{emergency}[1]{%
  \par
  \setlength{\emergencystretch}{#1}%
}{%
  \par
}

\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed dm nonumlllllllllllll \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 

\begin{emergency}{1pt}
Pino dfgdfgfdgfgfgfgf sdsdsds den dfgdfgfgfgfgfg eines Datensatzes irreversibel \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata
\end{emergency}

Pino dfgdfgfdgfgfgfgf sdsdsds den dfgdfgfgfgfgfg eines Datensatzes irreversibel \cite[270]{xyz}. invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebu. clita kasd gubergren, no sea takimata 

Lorem \cite[270]{xyz} ipsum
\end{document}

在此处输入图片描述

相关内容