如何获取框中剩余的可用水平空间宽度

如何获取框中剩余的可用水平空间宽度

我有一个 6 厘米宽的盒子,我想在其中放置一个标签,标签后面跟着下划线区域,该区域应填满所有剩余的水平空间。如何正确制作?

\makebox[6cm]{
  Label: \underline{
   \makebox[<100% of free space>]{Signature}
  }\newline
}

答案1

这就是你想要的东西吗?

\documentclass{article}

\usepackage{bigstrut} 

\begin{document}

\fbox{%
\parbox{6cm}{
  Label: Signature\\[3ex]
\hphantom{Label: }\hrulefill
}}\bigskip

or \bigskip

\fbox{%
\parbox{6cm}{
  Label: \hfill Signature\hfill\null\\[3ex]
\hphantom{Label: }\hrulefill
}}\bigskip

或 \bigskip

\fbox{%
\parbox{6cm}{\bigstrut
  Label: \hrulefill\\[3ex]
\hphantom{Label: }\hfill Signature\hfill\null
}}

\end{document} 

在此处输入图片描述

答案2

有多种方法可以实现这一点。下面是使用固定宽度p列的方法tabular

在此处输入图片描述

\documentclass{article}

\newcommand{\signature}[2][6cm]{%
  \begin{tabular}{@{} l @{} p{#1} @{} }
    #2:~ & \\
    \cline{2-2}
    & \centering\footnotesize Signature
  \end{tabular}}

\begin{document}

\signature{Stan}

\signature[7cm]{Cartman}

\signature{Kyle}

\signature[40mm]{Kenny}

\end{document}

如果要指定指定长度的整个宽度,可以使用tabularx定义:

在此处输入图片描述

\newcommand{\signature}[2][6cm]{%
  \begin{tabularx}{#1}{@{} l @{} X @{} }
    #2:~ & \\
    \cline{2-2}
    &\centering\footnotesize Signature
  \end{tabularx}}

答案3

您可以测量标签,然后制作一个与可用空间一样宽的表格。

\documentclass{article}

\newsavebox{\signaturelabelbox}

\newcommand{\signature}[2][6cm]{%
  \makebox[#1]{%
    \sbox{\signaturelabelbox}{#2: }%
    \usebox{\signaturelabelbox}%
    \renewcommand{\arraystretch}{0}%
    \begin{tabular}[t]{@{}c@{}}
    \makebox[\dimexpr#1-\wd\signaturelabelbox]{}\\
    \hline
    \footnotesize\strut Signature
    \end{tabular}%
  }%
}

\begin{document}

\signature{Author}

\signature{Advisor}

\signature[10cm]{Author}

\signature[10cm]{Advisor}

\end{document}

您负责垂直间距(可以添加到宏中)。

在此处输入图片描述

相关内容