灵活大小的下划线

灵活大小的下划线

我想要一个空白行,后面跟着 5 个复选框,这样它们一起占据整个可用的水平空间。

我目前“解决”这个问题的方法是:

\usepackage{amssymb}

\begin{document}
\framebox{\begin{minipage}{0.25\textwidth}
\underline{\hspace{0.77\textwidth}}\,$\square$ $\square$ $\square$ $\square$
\underline{\hspace{0.77\textwidth}}\,$\square$ $\square$ $\square$ $\square$
\underline{\hspace{0.77\textwidth}}\,$\square$ $\square$ $\square$ $\square$
\underline{\hspace{0.77\textwidth}}\,$\square$ $\square$ $\square$ $\square$
\end{minipage}}
\end{document}

只是0.77我通过一个相当繁琐的二分查找找到的一些数字。现在这不是很好,如果我调整任何参数(方格数、方格间距、页面大小、封闭框大小等)或添加任何内容,这个数字就必须重新计算。我理想情况下想要这样说:“在右侧放置 5 个方格,并用下划线填充剩余空间(加上一些填充)”。但我一直在努力让它工作。

有什么方法可以做到这一点而不必依赖神奇数字吗?

答案1

正如其他人所评论的,\hrulefill是你的朋友,但你可能想简化你的输入并避免做重复和无聊的事情(这很容易出错;事实上你谈到了五个框,但只输入了四个)。

\documentclass{article}
\usepackage{amssymb}

\ExplSyntaxOn

\NewDocumentCommand{\checkboxes}{mmm}
 {% #1 is the width
  % #2 is number of lines
  % #3 is the number of check boxes
  \noindent
  \fbox
   {
    \begin{minipage}{ \dim_eval:n { #1 - 2\fboxsep - 2\fboxrule } }
    \ozaic_checkboxes:nn { #2 } { #3 }
    \end{minipage}
   }
 }

\cs_new_protected:Nn \ozaic_checkboxes:nn
 {
  \prg_replicate:nn { #1 }
   { % lines
     \hrulefill \prg_replicate:nn { #2 } { \ $\square$ } \par
   }
 }

\ExplSyntaxOff

\begin{document}

\checkboxes{0.25\textwidth}{4}{5}

\bigskip

\checkboxes{0.5\textwidth}{3}{4}\checkboxes{0.5\textwidth}{3}{4}

\end{document}

在此处输入图片描述

从第二个例子中可以看出,占用的空间是确切地文本宽度的一半。

答案2

您可以使用\leadersTeX 原语:

\def\ulinefill{\noindent\null\leaders\vrule depth2.4pt height-2pt\hfill}

\begin{document}
\framebox{\begin{minipage}{0.7\textwidth}
\ulinefill\,$\square$ $\square$ $\square$ $\square$\break
\ulinefill\,$\square$ $\square$ $\square$ $\square$\break
\ulinefill\,$\square$ $\square$ $\square$ $\square$\break
\ulinefill\,$\square$ $\square$ $\square$ $\square$
\end{minipage}}
\end{document}

相关内容