我想将TextField
a 中 s的末尾对齐,使它们位于同一行。如果一行中Form
只有s,TextField
这这个问题给了我一个很好的答案。如果还有CheckBox
或其他字段,我该怎么办?
\documentclass{article}
\setlength\parskip{1ex}
\usepackage{hyperref}
\usepackage{xcolor}
\newsavebox\TBox
\newcommand{\myTextField}[2]{%
\sbox\TBox{#1 }%
\TextField[backgroundcolor=gray!20,borderwidth=0,width=\dimexpr#2-\wd\TBox]{#1}%
}
\begin{document}
\begin{Form}
\begin{center}
\myTextField{Name:}{0.8\textwidth}
\myTextField{Address:}{0.8\textwidth}
\myTextField{Phone:}{0.5\textwidth}\hspace{0.01\textwidth}\myTextField{E-mail:}{0.29\textwidth}
\CheckBox[bordercolor=black]{Speaker:}\hspace{0.05\textwidth}\myTextField{Lecture title:}{0.608\textwidth}
\end{center}
\end{Form}
\end{document}
答案1
最简单的方法是在页面左侧标记 x 坐标,Lecture title:
\TextField
并在其上方其他组件的右侧标记 x 坐标(应在标记处0.8\textwidth
,除非缩进),然后使用该坐标计算水平宽度:
\documentclass{article}
\setlength{\parskip}{1.5ex}
\usepackage{xcolor,zref-savepos}
\usepackage{hyperref}
\newsavebox\TBox
\newcommand{\myTextField}[2]{%
\sbox\TBox{#1 }%
\TextField[backgroundcolor=gray!20,borderwidth=0,width=\dimexpr#2-\wd\TBox]{#1}%
}
\begin{document}
\begin{Form}
\myTextField{Name:}{0.8\textwidth}
\myTextField{Address:}{0.8\textwidth}
\myTextField{Phone:}{0.5\textwidth}%
\hspace{0.01\textwidth}%
\myTextField{E-mail:}{0.29\textwidth}%
\zsaveposx{x-right}% Mark right x-coordinate
\CheckBox[bordercolor=black]{Speaker:}%
\hspace{0.05\textwidth}%
\zsaveposx{x-left}% Mark left x-coordinate
\myTextField{Lecture title:}{\dimexpr\zposx{x-right}sp-\zposx{x-left}sp}
\end{Form}
\end{document}
zref
的savepos
模块可以轻松捕获坐标(x
或y
两者)并将它们用于计算。将坐标\zsaveposx
捕获x
为“ \label
” 同时检索相对于页面几何的校准点(或s)\zposx
中的坐标;(0,0)是左下角。s
p
sp