使用 TextField 和 CheckBox 在 LaTeX 中制作可填写的表格

使用 TextField 和 CheckBox 在 LaTeX 中制作可填写的表格

这是我目前使用下面给出的代码所得到的结果。

在此处输入图片描述

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{array}

\makeatletter

\providecommand{\tabularnewline}{\\}

\usepackage{hyperref}

\makeatother

\usepackage{babel}
\begin{document}
\begin{Form}[action=http://your-web-server.com/path/receiveform.cgi]

\begin{tabular}{ll>{\centering}p{0.6cm}ll}
Name: & \TextField[height=0.01cm, width=5cm] &  & Name: & Need TextField here  \tabularnewline
Client's Name: & \TextField[height=0.01cm, width=5cm] &  & Advisor Name: & \rule{5cm}{1pt}\tabularnewline
\end{tabular}

\vspace*{0.3cm}

Have you ? \hfill{} \CheckBox[height=0.01cm, width=0.4cm] \enspace{} Yes
\hfill{} \CheckBox[height=0.01cm, width=0.4cm] \enspace{} No


\Submit{Submit}

\end{Form}
\end{document}

问题

  1. TextField当两个TextFields 重叠时,如何控制高度?
  2. 如何改变的颜色TextField
  3. 如何使两个CheckBoxes 互斥,以便一次只能检查一个?

非常感谢您的帮助。谢谢

答案1

您可以使用 height 选项或通过重新定义 \DefaultHeightofText 来更改文本字段的高度。但是最小字段的高度始终是周围框的高度。在表格单元格(包含 \strut)中,这是单元格的高度。如果要避免这种情况,可以添加一个附加框:

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{hyperref}
\usepackage{babel}

\begin{document}
%suppress the label:
\def\LayoutTextField#1#2{% label, field
  #2%
}
\begin{Form}
\def\DefaultHeightofText{5pt}

\mbox{\strut\TextField[width=3cm]{namea}} \mbox{\TextField[width=3cm]{namea}}


\begin{tabular}{ll}
Name: & \mbox{\TextField[width=3cm]{namea}} \\%smaller
Name: & \TextField[width=3cm]{namea}
\end{tabular}


\end{Form}
\end{document}

在此处输入图片描述

答案2

除了tabular环境之外,您还可以使用multicol包将字段拆分为两列,在这种情况下,您可以根据需要修改文本字段的高度

更多详细信息请参见此处回答

\documentclass[english]{article}
\usepackage[margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{array}
\usepackage{babel}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{hyperref}

\parindent0pt

\renewcommand*{\LayoutTextField}[2]{\makebox[7em][l]{#1: }%
  \raisebox{\baselineskip}{\raisebox{-\height}{#2}}}


\begin{document}

\begin{Form}[action=http://your-web-server.com/path/receiveform.cgi]

\begin{multicols}{2}
 \TextField[name=name, width=4cm, color=0.18 0.55 0.34, % seagreen
          bordercolor=1 0 1, charsize=9pt]{Name} \vskip2ex
 \TextField[name=client ,width=4cm]{Client's Name}       

 \columnbreak

 \TextField[name=name2,width=4cm]{Name} \vskip2ex
  Advisor Name:  \rule{4cm}{1pt}
\end{multicols}

\vspace*{0.3cm}

\noindent
Have you ? \hfill{} \CheckBox[height=0.01cm, width=0.4cm]{Yes}
\hfill{} \CheckBox[height=0.01cm, width=0.4cm]{No}

\noindent
\Submit{Submit}
\end{Form}

\end{document}

在此处输入图片描述

答案3

  1. 一般来说,a 的高度TextField由宏控制\DefaultHeightofText;我无法告诉你为什么它在表格中不起作用。我也遇到过这个问题,但我放弃了。它在普通文本中有效(见下文)。
  2. TextField您可以使用键更改内部文本的颜色color。颜色规范必须是 RGB 三元组,范围为 0..1。还有一个bordercolor键。
  3. CheckBoxes 和TextFields 带有强制label参数。这label用于使它们无歧义。如果您想将此参数留空,请使用键name作为唯一标签。

代码:

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{array}
\usepackage{babel}
\usepackage{xcolor}

\usepackage{hyperref}

\begin{document}

\begin{Form}[action=http://your-web-server.com/path/receiveform.cgi]

\noindent \def\DefaultHeightofText{5pt}%
\begin{tabular}{@{}ll>{\centering\arraybackslash}p{0.6cm}ll}
  Name: &  \TextField[name=name, width=5cm, color=0.18 0.55 0.34, % seagreen
          bordercolor=1 0 1, charsize=9pt, height=3pt]{}
        &  & Name: & Need TextField here \\
  Client's Name: & \TextField[name=client, width=5cm]{}
                 &  & Advisor Name: & \rule{5cm}{1pt}
\end{tabular}

\vspace*{0.3cm}

\noindent
Have you ? \hfill{} \CheckBox[height=0.01cm, width=0.4cm]{Yes}
\hfill{} \CheckBox[height=0.01cm, width=0.4cm]{No}

\noindent
\Submit{Submit}

\vspace{3ex}

\def\DefaultHeightofText{5pt}
\TextField{5pt}

\vspace{3ex}

\def\DefaultHeightofText{\baselineskip}
\TextField{baselineskip}

\end{Form}

\end{document}

在此处输入图片描述

相关内容