此代码
\documentclass[10pt,a4paper]{article}
\usepackage[showframe,headheight=2in,headsep=0.1in,left=0.8in,right=0.8in,bottom=0.5in]{geometry}
\usepackage{xcolor}
\usepackage{hyperref}
\begin{document}
\begin{Form}
\noindent\textbf{DESCRIPTION OF ACTIVITY}\raisebox{-2pt}{\TextField[name=description,width=4.3in]{~}}
\end{Form}
\end{document}
给出输出
请注意,文本字段框未在右边缘结束。这导致在输入几行带有文本字段的内容后,框的对齐变得很丑陋。我本可以\hfill
在文本字段之前使用,但这会在“DESCRIPTION...”和文本字段之间留下丑陋的空白。
因此,对于我的问题是:如何定义宽度 remwidth,以便我可以编写
\noindent\textbf{DESCRIPTION OF ACTIVITY}\raisebox{-2pt}{\TextField[name=description,width=remwidth]{}}
以便文本字段框准确停止在右边距规则处?
如果答案能够解释每一步发生的情况,我将不胜感激。
编辑:2012 年 10 月 15 日我编辑了这个问题,因为问题实际上与\TextField
命令和hyperref
包在其中放置填充有关,如评论中所述。我关于定义可以在其他地方使用的宽度命令的问题的另一部分实际上是通过\linewidth
,这是我昨晚才学到的,即使在使用 LaTeX 3 年后。问题\textwidth、\linewidth 和 \hsize 之间的区别向我阐明了它的用途。
答案1
必需的参数\TextField
是框前面的文本。测量它(并剪切一些内容)就足够了。
\documentclass{article}
\usepackage[pass,showframe]{geometry}
\usepackage{lipsum}
\usepackage{hyperref}
\newlength\TextFieldLength
\newcommand\TextFieldFill[2][]{%
\setlength\TextFieldLength{\linewidth}%
\settowidth{\dimen0}{#2 }%
\addtolength\TextFieldLength{-\dimen0}%
\addtolength\TextFieldLength{-2.22221pt}%
\TextField[#1,width=\TextFieldLength]{\raisebox{2pt}{#2 }}%
}
\begin{document}
\lipsum[2]
\begin{Form}
\noindent\TextFieldFill[name=description]{\textbf{DESCRIPTION OF ACTIVITY}}
\noindent\TextFieldFill[name=procrastination]{\textbf{WAYS TO PROCRASTINATE}}
\end{Form}
\end{document}
lipsum
和包geometry
仅用于提供文本和框架。2.22221pt 的超额是根据Overfull \hbox
没有它时收到的消息确定的。
可以通过以下方式摆脱这种调整
\newcommand\TextFieldFill[2][]{%
\setlength\TextFieldLength{\linewidth}%
\settowidth{\dimen0}{#2 }%
\addtolength\TextFieldLength{-\dimen0}%
\TextField[#1,width=\TextFieldLength]{\raisebox{2pt}{#2}}%
}
因为调用的宏\TextField
在文本和框之间添加了一个(感谢 Heiko Oberdiek 指出这一点)。
答案2
最简单的方法是测量早期的文本,然后从中减去它的宽度\linewidth
\documentclass[10pt,a4paper]{article}
\usepackage[showframe,headheight=2in,headsep=0.1in,left=0.8in,right=0.8in,bottom=0.5in]{geometry}
\usepackage{xcolor}
\usepackage{hyperref}
\newbox\formbox
\begin{document}
\begin{Form}
\noindent
\setbox\formbox\hbox{\textbf{DESCRIPTION OF ACTIVITY}}\usebox\formbox
\raisebox{-2pt}{\TextField[name=description, width=\dimexpr\linewidth-\wd\formbox\relax]{}}
\end{Form}
\end{document}