如何在自定义列表环境中自动换行长串(非数学)数字?

如何在自定义列表环境中自动换行长串(非数学)数字?

我目前正在定义一个列表环境,到目前为止,它对我来说运行得很好。然而,事实证明,当添加一串太长的(非数学)数字时,LaTex 将无法分成两行,从而生成一行太大的内容(即超满警告)。这是 MWE:

\documentclass[a4paper]{article}

\begin{document}

\newdimen\colsep \colsep=1em
\def\topbox#1#2{\vtop{\parindent=0pt \hsize=\dimexpr#1\relax #2}}
\def\entryb#1#2#3#4{\par
   \vspace{5pt}\hbox{\topbox{1.75cm}{#1\raggedleft}\kern\colsep
         \topbox{\hsize-2\colsep-1.75cm}{{\bf#2}\hfill {\footnotesize#3}\endgraf#4}}
   \smallskip
}

  \entryb
    {[1]}
    {\normalfont{Author (XXXX)} \textit{Very fancy title}. \textbf{Not so fancy journal} \normalfont{(forthcoming), pp. ?--?. DOI: 10.19292020384080/03059.8374659022.20945896}}
    {}
    {}
    
\end{document}

输出如下:

在此处输入图片描述

如您所见,包含 DOI 的行比应有的要长。

谁能帮我找到一种方法来告诉 LaTex 自动断开任何过长的数字串?

非常感谢大家的帮助。

答案1

您可以(a)加载序列分割打包并 (b) 将 doi 字符串装入\seqsplit包装器中。

在此处输入图片描述

\documentclass[a4paper]{article}
\newdimen\colsep \colsep=1em
\def\topbox#1#2{\vtop{\parindent=0pt \hsize=\dimexpr#1\relax #2}}
\def\entryb#1#2#3#4{\par
   \vspace{5pt}\hbox{\topbox{1.75cm}{#1\raggedleft}\kern\colsep
         \topbox{\hsize-2\colsep-1.75cm}{{\bf#2}\hfill {\footnotesize#3}\endgraf#4}}
   \smallskip}
   
% new:
\usepackage{seqsplit}

\begin{document}

\entryb{[1]}
    {\normalfont{Author (XXXX)} 
    \textit{Very fancy title}. 
    \textbf{Not so fancy journal} 
    {\normalfont (forthcoming), pp.\ ?--?. 
    DOI: \seqsplit{10.19292020384080/03059.8374659022.20945896}}}
    {}{}
    
\end{document}

相关内容