我们正在编写一份技术文档,其中包含一些特殊要求标识符,这些标识符使用点符号。例如:
FRQ.SW.MOD.GUI.1
FRQ.DATA.LOG.OUT.PRINT.1
正如您所料,我们收到了很多overfull box
消息,并且这些“单词”没有通过连字符机制进行拆分。
所以我在寻找另一种解决方案。有没有办法定义一个自由裁量规则或其他东西来让这些词换行?我们不想使用类似的东西\url
。用户体验应该尽可能流畅。
谢谢,阿罗纳尔
这个问题是替换 \label 内的 #
答案1
使用url
包和
\path|FRQ.DATA.LOG.OUT.PRINT.1|
并且它将允许打破.
如果需要,您可以定义具有不同名称的命令,请参阅 url 包文档。
将其添加到链接问题中的示例中,并设置@
为输入 # 的更安全方式,可得到
\documentclass[a4paper]{scrartcl}
\usepackage[left=2cm,right=2cm,top=2.5cm,bottom=2cm]{geometry}
\setlength\parindent{0pt}
\usepackage{url}
\makeatletter
\newcommand{\req}[2]{%
\begingroup
\textbf{\url{#1}}%
\addcontentsline{lor}{requirement}{\protect\url{#1}}%
\def\@currentlabel{\protect\url{#1}}\label{req:#1}~#2\par
\endgroup
}
\DeclareNewTOC[%
type=requirement, %
types=requirements, %
name=Anforderung, %
listname={List of Requirements} %
]{lor}
\setuptoc{lor}{chapteratlist}
\def\UrlBigBreaks{\do\.}
\mathchardef\UrlBigBreakPenalty=50
\let\oldUrlSpecials\UrlSpecials
\def\UrlSpecials{\oldUrlSpecials\do\@{\texttt\#}}
\begin{document}
\section{Test}
\req{MY.REQ.ID.42}{Lorem ipsum dolor sit amet,...}
\req{MY.REQ.ID.43@BROKEN}{this requirement is broken,...}
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx
Please have a look at \ref{req:MY.REQ.ID.42} on page~\pageref{req:MY.REQ.ID.42}
x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x
Please have a look at \ref{req:MY.REQ.ID.43@BROKEN} on page~\pageref{req:MY.REQ.ID.42}
\listofrequirements
\end{document}