当存在其他类型的字段时对齐 TextField 的末尾

当存在其他类型的字段时对齐 TextField 的末尾

我想将TextFielda 中 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}

zrefsavepos模块可以轻松捕获坐标(xy两者)并将它们用于计算。将坐标\zsaveposx捕获x为“ \label” 同时检索相对于页面几何的校准点(或s)\zposx中的坐标;(0,0)是左下角。spsp

相关内容