是否有一个与 hyperref 兼容的 DOI 包允许换行?

是否有一个与 hyperref 兼容的 DOI 包允许换行?

我知道包裹网址允许使用合理的换行符排版超链接 URL,以及包道伊为数字对象标识符 (DOI) 提供正确的超链接。但是,后者的软件包不会为 DOI 插入换行符,并且会产生可怕的过度水平盒子。

是否有一个带有合理换行符的超链接 DOI 包,例如 DOI 和 url 的组合?

答案1

这是一个需要一些手动干预的解决方法。首先是代码:

\documentclass{article}
\usepackage{doi}

\makeatletter
\def\@doi#1{% 
  \let\#\relax
  \let\_\relax
  \let\textless\relax 
  \let\textgreater\relax 
  \edef\x{\toks0={{#1}}}%
  \x
  \edef\#{\@percentchar23}%
  \edef\_{_}%
  \edef\textless{\@percentchar3C}% instead of {\string<} for Apple
  \edef\textgreater{\@percentchar3E}% instead of {\sting>} for Apple
  \begingroup      %%% <----- begin modification
  \edef\allowbreak{}
  \edef\x{\endgroup\toks2={\noexpand\href{\doiurl#1}}}%   <----- end modification 
  \x
  \edef\x{\endgroup\doitext\the\toks2 \the\toks0}%
  \x
}
\makeatother

\begin{document}

\begin{minipage}{2in}
        \doi{really.long.line.#really_\allowbreak .long.line<test>.line/10.29345}
\end{minipage}
\end{document}

\@doi命令来自doi包的内部。我所做的是添加一行额外的逻辑:在为超链接生成清理后的 URL 时,代码会删除对 的任何调用\allowbreak。这允许您手动插入显示的 URL 的允许断点作为 DOI 字符串的一部分。

xurl如果您知道要在哪里设置断点,那么这可以实现自动化:可以借用或breakurl或的代码url在特定字符处插入断点。我将把这个留给其他人。

在此处输入图片描述

相关内容