![计算超链接表单的 TextField 宽度](https://linux22.com/image/444878/%E8%AE%A1%E7%AE%97%E8%B6%85%E9%93%BE%E6%8E%A5%E8%A1%A8%E5%8D%95%E7%9A%84%20TextField%20%E5%AE%BD%E5%BA%A6.png)
我正在尝试使用 创建一个表单hyperref
。这是我目前得到的结果。(我也会移除边框。但要查看我正在做什么,它仍然在那里。)
我对当前的解决方案存在以下问题:
- 是否有某种方法可以自动计算
width
文本字段,以便它们填满单元格中的剩余空间。 - 当我使用时,为什么行首会有这个小凹痕
multicolumn
?
我目前的想法是这样的:
- 添加另一个参数,即
DefaultTextField
当前单元格宽度 - 计算标签所需的空间(不幸的是,我不知道如何做到这一点)
- 将宽度参数设置
TextField
为width=#<paramnr>-/reservedspace
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage{multirow}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\renewcommand\LayoutTextField[2]{%
#1 \raisebox{-3.0pt}{#2}%
}
\newcommand{\DefaultTextField}[2][]{%
\mbox{\TextField[align=1,bordercolor=0 1 1,backgroundcolor={},#1]{#2}}%
}
\renewcommand\LayoutCheckField[2]{%
\raisebox{-1.0pt}{#2}\hspace*{2mm}#1%
}
\newcommand{\DefaultCheckBox}[2][]{%
\mbox{\CheckBox[bordercolor=0 0 0,backgroundcolor={},borderwidth=0.4mm,height=3mm,width=3mm,#1]{#2}}%
}
\begin{document}
\begin{Form}
\renewcommand{\arraystretch}{1.5}%
\begin{tabular}{@{}L{0.5\textwidth}L{0.5\textwidth}@{}}
\DefaultTextField[name=firstname,width=0.25\textwidth]{Firstname} &
\DefaultTextField[name=lastname,width=0.25\textwidth]{Lastname}\\ \hline
\DefaultTextField[name=address1,width=0.25\textwidth]{Address} &
\DefaultTextField[name=address2,,width=0.25\textwidth]{ZIP, City}\\ \hline
\multicolumn{2}{l}{\DefaultTextField[name=mail,width=0.25\textwidth]{E-Mail}}\\ \hline
\multicolumn{2}{l}{\DefaultTextField[name=phone,width=0.25\textwidth]{Phone/Mobile}}\\ \hline
Foo\hfil\DefaultCheckBox[name=bar]{Bar}\hfil & \DefaultTextField[name=something,width=0.25\textwidth]{other} \\ \cline{2-2}
\multicolumn{2}{l}{\DefaultTextField[name=number,width=0.25\textwidth]{Something}}\\ \hline
\end{tabular}
\end{Form}
\end{document}
答案1
您可以轻松获取标签的宽度,然后计算长度:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage{multirow}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\renewcommand\LayoutTextField[2]{%
#1 \raisebox{-3.0pt}{#2}%
}
\newlength\templength
\newcommand{\DefaultTextField}[2][]{%
\settowidth\templength{#2 }%
\mbox{\TextField[align=1,bordercolor=0 1 1,backgroundcolor={},#1,width=\dimexpr\linewidth-\templength]{#2}}%
}
\renewcommand\LayoutCheckField[2]{%
\raisebox{-1.0pt}{#2}\hspace*{2mm}#1%
}
\newcommand{\DefaultCheckBox}[2][]{%
\mbox{\CheckBox[bordercolor=0 0 0,backgroundcolor={},borderwidth=0.4mm,height=3mm,width=3mm,#1]{#2}}%
}
\begin{document}
\begin{Form}
\renewcommand{\arraystretch}{1.5}%
\noindent
\begin{tabular}{@{}L{\dimexpr0.5\textwidth-\tabcolsep}L{\dimexpr0.5\textwidth-\tabcolsep}@{}}
\DefaultTextField[name=firstname]{Firstname} &
\DefaultTextField[name=lastname]{Lastname}\\ \hline
\DefaultTextField[name=address1]{Address} &
\DefaultTextField[name=address2]{ZIP, City}\\ \hline
\multicolumn{2}{@{}p{\textwidth}@{}}{\DefaultTextField[name=mail,width=0.25\textwidth]{E-Mail}}\\ \hline
\multicolumn{2}{@{}p{\textwidth}@{}}{\DefaultTextField[name=phone,width=0.25\textwidth]{Phone/Mobile}}\\ \hline
Foo\hfil\DefaultCheckBox[name=bar]{Bar}\hfil & \DefaultTextField[name=something,width=0.25\textwidth]{other} \\ \cline{2-2}
\multicolumn{2}{@{}p{\textwidth}@{}}{\DefaultTextField[name=number,width=0.25\textwidth]{Something}}\\ \hline
\end{tabular}
\end{Form}
\end{document}