![如何打破 \rule 的界限?](https://linux22.com/image/375273/%E5%A6%82%E4%BD%95%E6%89%93%E7%A0%B4%20%5Crule%20%E7%9A%84%E7%95%8C%E9%99%90%EF%BC%9F.png)
有没有一种简单的方法可以打破多行规则?例如,让它像文本一样继续流动,而不是直接穿过页面边框?
具体来说,我正在尝试排版测试问题。
以下是 MWE:
\documentclass[11pt]{article}
\usepackage{enumitem}
\usepackage[left=2cm,right=2cm,bottom=2cm,top=2cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\begin{document}
\begin{enumerate}[label=(\arabic*)]
\item Ap sala kemae njeuqsket jquakmdk a kameiuwma ke eiqkamk jekamska keialk
oela \rule{6cm}{0.15mm}.
\end{enumerate}
\end{document}
我得到的是:
但行的第一部分会延伸到文本宽度的末尾,然后中断并继续下一行。(“所需”输出是通过对命令进行两次调用来排版规则\rule
,并在两次调用之间进行手动换行来完成\\
的。)
答案1
我引入了\breakablerule
与 相同的参数\rule
。它使用长度 的段来构建规则\drule
,这里初始化为 2pt。最后一段的长度可能小于\drule
,以满足总体长度目标。
\documentclass[11pt]{article}
\usepackage{enumitem}
\usepackage[left=2cm,right=2cm,bottom=2cm,top=2cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\newlength\rulegoal
\newlength\drule
\setlength{\drule}{2pt}
\newcommand\breakablerule[3][0pt]{\setlength{\rulegoal}{#2}\breakableruleaux{#1}{#3}}
\newcommand\breakableruleaux[2]{%
\ifdim\rulegoal>\drule\relax%
\rule[#1]{\drule}{#2}\allowbreak%
\def\next{\breakableruleaux{#1}{#2}}%
\else
\rule[#1]{\rulegoal}{#2}%
\def\next{}%
\fi
\addtolength{\rulegoal}{-\drule}%
\next%
}
\begin{document}
\begin{enumerate}[label=(\arabic*)]
\item Ap sala kemae njeuqsket jquakmdk a kameiuwma ke eiqkamk jekamska
keialk oela \breakablerule[-3pt]{6cm}{0.15mm}.
\item Ap sala kemae njeuqsket jquakmdk a kameiuwma ke eiqkamk jekamska
\breakablerule{6cm}{0.15mm}.
\item Ap sala kemae njeuqsket jquakmdk a kameiuwma ke eiqkamk
\breakablerule{6cm}{0.15mm}.
\end{enumerate}
\end{document}
可能有一种方法可以直接与领导者一起做到这一点。
答案2
对于一次性使用,你可以使用\hrulefill \\
和另一个\rule
固定宽度的组合来手动断线:
\documentclass{article}
\usepackage{enumitem}
\usepackage[margin = 2cm, showframe]{geometry}
\usepackage[onehalfspacing]{setspace}
\begin{document}
\begin{enumerate}[label=(\arabic*)]
\item Ap sala kemae njeuqsket jquakmdk a kameiuwma ke eiqkamk jekamska keialk
oela \rule{6cm}{0.15mm}.
\item Ap sala kemae njeuqsket jquakmdk a kameiuwma ke eiqkamk jekamska keialk
oela \hrulefill \\
\rule{5cm}{.4pt}.% \hrulefill has .4pt thickness
\end{enumerate}
\end{document}