如何将 \TextField 的 {label} 放置在具有 hyperref 的表单字段顶部?

如何将 \TextField 的 {label} 放置在具有 hyperref 的表单字段顶部?

\TextField[height=5cm]{label}当放置带有hyperref标签的高点时(文本字段名称在屏幕截图中)放置在底部。

如何将其移至顶部(蓝色位置)?

我尝试在手册和其他地方查找对齐,但这似乎不是与此相关的关键字。

例子

\documentclass[12pt]{article}
\usepackage{hyperref}

\begin{document}
  \begin{Form}
    \TextField[ width=12cm, height=5cm, 
                multiline=true, name=tField]{TextFieldName}
  \end{Form}
\end{document}

答案1

总体布局通过 \LayoutTextField 定义,您可以重新定义它:

\documentclass[12pt]{article}
\usepackage{hyperref}

\makeatletter
\def\LayoutTextField#1#2{% label, field
  \def\Hy@temp{#1}%
  \ifx\Hy@temp\@empty
    #2%
  \else
    #1 \raisebox{\dimeval{-\height+\ht\strutbox}}{#2}%
  \fi
}
\makeatother
\begin{document}
  \begin{Form}
    \TextField[ width=12cm, height=5cm,
                multiline=true, name=tField]{TextFieldName}
  \end{Form}
\end{document}

在此处输入图片描述

答案2

好的,找到了一个明显的解决方案:

  • \TextField{}视为与任何其他字符一样
  • 即它与基线对齐
  • 因此避免使用标签,将其作为普通文本放置并提升它解决了这个问题

例子

\documentclass[12pt]{article}
\usepackage{hyperref}

\begin{document}
  \begin{Form}
    \rule{1cm}{1pt}
    % ~~~ \TextField{cLabel} ~~~~~
    \TextField[ width=1cm, height=2cm, 
                multiline=true, name=t1]{cLabel}
    \rule{1cm}{1pt} 
    % ~~~ text + \TextField{} ~~~~~     
    Lbl-text: \TextField[width=1cm, height=2cm, name=t2]{}
    \rule{1cm}{1pt}
    % ~~~ raised text + \TextField{} ~~~~~          
    \raisebox{2cm}{Raised text:} \TextField[width=1cm, height=2cm, name=t3]{}
    \rule{1cm}{1pt}
    
  \end{Form}
\end{document}

相关内容