如何使用 \sloppy 获取一些参考?

如何使用 \sloppy 获取一些参考?

我在 MiKTeX 中使用 XeLaTeX,还有biblatex文献包。

我注意到我使用的参考书目集默认\printbibliography没有设置该\sloppy选项,在我看来这很好。

我希望能够做的是制作\sloppy\sloppypar仅制作参考书目中真正需要的参考文献,也就是那些过满的记录\hbox。我不希望它自动完成,但我还没有找到手动完成的方法。这可能吗?

答案1

\emergencystretch之前已经设定\printbibliography

\begingroup
\setlength{\emergencystretch}{8em}
\printbibliography
\endgroup

TeX\emergencystretch仅在段落不符合通常的参数时才使用,因此这可能会解决问题。请尝试使用 的值\emergencystretch

答案2

正如 Ulrike Fischer 所暗示的:使用execute特殊字段添加\sloppy相应的参考条目。

\documentclass{article}

\usepackage{biblatex}

\newcommand*{\displayemergencystretch}{%
  Emergency stretch: \the\emergencystretch
}

\renewbibmacro*{finentry}{%
  \finentry
  \addspace% ADDED
  \printtext[brackets]{\displayemergencystretch}% ADDED
}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  execute = {\sloppy},
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
@misc{C03,
  author = {Cuthor, C.},
  year = {2003},
  title = {Charlie},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\sloppy

A \verb|\sloppy| paragraph~-- \displayemergencystretch

\fussy

A \verb|\fussy| paragraph~-- \displayemergencystretch

\printbibliography

\end{document}

在此处输入图片描述

答案3

这不是 100% 的直接答案,但由于我刚刚在参考书目中遇到了类似的问题,所以我的方法如下。它使用包ragged2e,该包定义了一个\RaggedRight仍然允许连字符的命令——至少对我来说至关重要的是,它在 URL 中包含连字符(使用包时url)。我决定\RaggedRight只对@electronic项目启用(其主要内容是短标题和 wicked-to-linebreak url),并定义了我自己的 .bst 文件。它是从 abbrvnat.bst 复制/粘贴/修改的,以下是相关摘录:

FUNCTION {electronic}
{ output.bibitem
  url empty$ 'skip$ { "\begin{FlushLeft}" write$ newline$ } if$
  format.authors output
  new.block
  format.title "title" output.check
  year empty$ month empty$ day and and
  'skip$
  {
    new.block
    format.date output 
  }
  if$
  new.block 
  format.url output
  note empty$ 'skip$
  {
    new.block
    note output
  }
  if$
  fin.entry
  url empty$ 'skip$ { "\end{FlushLeft}" write$ newline$ } if$
}

.bst 文件很难处理,但这段代码的结果是,如果有一个 url,然后我用一个FlushLeft环境把条目的内容包围起来,这样就可以\RaggedRight在这个段落上启用——而且只能在这个段落上启用。

要使用该execute字段,正如@UlrikeFischer 建议的那样,您可以重新定义output.bibitemfin.entry检查该execute字段并将其输出:

% in output.bibitem
execute empty$ 'skip$ "\begingroup" execute * write$
% in fin.entry
execute empty$ 'skip$ "\endgroup" write$

然后您的execute字段可以包含\RaggedRight,您将获得与我上面的代码相同的效果,但适用于您注释的所有 .bib 项目。它不是完全自动的“溢出 hbox”解决方案,但它可能无论如何都很有用。

相关内容