![如何自动确定此表单中文本字段的剩余宽度?](https://linux22.com/image/327495/%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E7%A1%AE%E5%AE%9A%E6%AD%A4%E8%A1%A8%E5%8D%95%E4%B8%AD%E6%96%87%E6%9C%AC%E5%AD%97%E6%AE%B5%E7%9A%84%E5%89%A9%E4%BD%99%E5%AE%BD%E5%BA%A6%EF%BC%9F.png)
hyperref
我使用表单环境借助包制作了此表单:
\documentclass[pagesize=pdftex,DIV=16]{scrartcl}
\usepackage{xcolor}
\usepackage{hyperref}
% \newlength\TextFieldLength
% \newcommand\TextFieldFill[2][]{%
% \setlength\TextFieldLength{\linewidth}%
% \settowidth{\dimen0}{#2 }%
% \addtolength\TextFieldLength{-\dimen0}%
% \TextField[#1,width=\TextFieldLength]{\raisebox{2pt}{#2}}%
% }
\begin{document}
\begin{Form}
\section*{Principal Investigator}
\TextField[backgroundcolor=gray!10,borderwidth=0,width=.95\linewidth]{Full Name:}\\[1ex]
% \TextFieldFill[backgroundcolor=gray!10,borderwidth=0]{Full Name:}\\[1ex]
\TextField[backgroundcolor=gray!10,borderwidth=0,width=6cm]{Department:}
\TextField[backgroundcolor=gray!10,borderwidth=0,width=7cm]{Institute:}\\[1ex]
% \TextFieldFill[backgroundcolor=gray!10,borderwidth=0]{Institute:}\\[1ex]
\TextField[backgroundcolor=gray!10,borderwidth=0,width=.95\linewidth]{E-Mail:}\\
\end{Form}
\end{document}
如您所见,文本字段的空间:全名、机构和电子邮件对齐不佳在他们的右端。
在寻找解决方案时我偶然发现了这一点邮政解决了当只有一个文本字段占据一行(如 和 )时的问题Full Name
,E-Mail
但对于 则没有Institute
。这一半解决方案在 MWE 中以注释的代码行形式提供。
问题:如何让 LaTeX 自动计算并应用文本字段的剩余空间直到线宽的末尾Institute
以及Full Name
和E-Mail
?
答案1
\documentclass[pagesize=pdftex,DIV=16]{scrartcl}
\usepackage{xcolor}
\usepackage{hyperref}
\newsavebox\TBox
\begin{document}
\begin{Form}
\section*{Principal Investigator}
\sbox\TBox{Full Name: }%
\TextField[backgroundcolor=gray!30,borderwidth=0,width=\dimexpr\linewidth-\wd\TBox]{Full
Name:}\\[1ex]
\sbox\TBox{Department: }%
\TextField[backgroundcolor=gray!30,borderwidth=0,width=\dimexpr0.5\linewidth-\wd\TBox]{Department:}
\sbox\TBox{ Institute: }%
\TextField[backgroundcolor=gray!30,borderwidth=0,width=\dimexpr0.5\linewidth-\wd\TBox]{Institute:}\\[1ex]
\sbox\TBox{E-Mail: }%
\TextField[backgroundcolor=gray!30,borderwidth=0,width=\dimexpr\linewidth-\wd\TBox]{E-Mail:}
\end{Form}
\end{document}
答案2
这并没有回答你的问题,因为你是在用环境制作表格hyperref
Form
,我不明白。如果这就像用灰色框填充一行一样简单,那么按照 LaTeX 的模型,这将非常容易\hrulefill
。也许这些信息可能会带来解决方案。
\hrulefill
在 LaTeX 中使用 TeX 基元\leaders
和\hrule
。\leaders
用模式的副本填充空格,因此\leaders\hrule
用水平线填充行。 有\hfill\kern\z@
必要告诉领导者何时停止(在本例中,在行末)。
只需定义一个执行相同操作但使用灰色框(技术上是“高” \hrule
)填充线条的命令,即可轻松获得与 MWE 视觉上相似的结果。因为这无论如何都会使用 TeX 基元,所以这里是 Plain TeX 中的演示(使用 编译pdftex
)。
\input color
\definecolor{fog}{gray}{0.85}
\def\fillbox{\leavevmode{\color{fog}\leaders\hrule height 1em\hfill\kern 0pt}}
\def\formquestion#1{#1\ \fillbox}
\formquestion{Full Name}
\formquestion{Department}\ \formquestion{Institute}
\formquestion{E-mail}
\bye