点符号中单词的自由连字符

点符号中单词的自由连字符

我们正在编写一份技术文档,其中包含一些特殊要求标识符,这些标识符使用点符号。例如:

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}

相关内容