我的一个同事将一个 tex 文件用作模板,他的程序将一些值插入到 中TextField
。当值很长时,值的末尾会被截断,如下例所示:
我可以让字体大小自动改变吗?在 Adobe Acrobat 生成的 PDF 中,我发现在编辑文本字段的内容后,内容会使用适合内容长度和文本字段大小的字体重新呈现。
如果这不可能的话,我还应该采取其他方法吗?
这是一个演示内容剪辑的简单示例:
\documentclass[fontsize=14pt]{scrreprt}
\usepackage{xcolor}
\usepackage[]{hyperref}
\begin{document}
\begin{Form}
\TextField[value=foo bar baz qux, width=1cm, name=a]{}
\end{Form}
\end{document}
答案1
您可以通过将 charsize 设置为 0pt(这意味着“自动”)来实现这一点,如果您想要,还可以选择 donotscroll。图片显示了此类字段的不同填充。
\documentclass[fontsize=14pt]{scrreprt}
\usepackage{xcolor}
\usepackage[]{hyperref}
\begin{document}
\begin{Form}
\TextField[charsize=0pt,donotscroll,value=foo bar baz qux, width=1cm, name=a]{}
\TextField[charsize=0pt,donotscroll,value=foo bar baz qux, width=1cm, name=b]{}
\TextField[charsize=0pt,donotscroll,value=foo bar baz qux, width=1cm, name=c]{}
\end{Form}
\end{document}
答案2
在这里,我开始将文本放入一个框中,同时将字体大小从 2pt、2.25pt、...、14pt 变化。我找到适合指定宽度*的最大尺寸,然后使用选项charsize
将\TextField
文本框设置为该尺寸。
*(大约)
\documentclass[fontsize=14pt]{scrreprt}
\usepackage{fix-cm}
\usepackage{xcolor,pgffor}
\usepackage[]{hyperref}
\newcommand\AutoTextField[3][name=a]{%
\def\fsize{2pt}%
\foreach\z in {2,2.25,...,14}{%
\sbox0{\fontsize{\z pt}{\z pt}\selectfont\sffamily#2}%
\ifdim\wd0<\dimexpr#3-\z pt+ 2pt\relax\xdef\fsize{\z}\fi
}%
\TextField[#1, charsize=\fsize pt, value=#2, width=#3]
}
\begin{document}
\begin{Form}
\TextField[value=foo bar baz qux, width=1cm, name=a]{OLD:}\\
\AutoTextField{foo bar baz qux}{1cm}{X:}
\AutoTextField{foo bar baz qux}{1.5cm}{X:}
\AutoTextField{foo bar baz qux}{2cm}{X:}
\AutoTextField{foo bar baz qux}{2.5cm}{X:}
\AutoTextField{foo bar baz qux}{3cm}{X:}\\
\AutoTextField{foo bar baz qux}{6cm}{X:}
\end{Form}
\end{document}