我必须使用 Latex 重新创建一个旧表单。它包含一个表格,其中多个问题与一些单选按钮相关联。
hyperref
我设法使用和来创建大部分表单和表格array
,但现在单选按钮的水平对齐出现了问题。如您在屏幕截图中看到的,单选按钮没有居中对齐,而是稍微向右偏移了一点。
如何使右边三列的单选按钮居中对齐?
\documentclass{report}
\usepackage{hyperref}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}
\begin{Form}
\noindent\begin{table}[!h]
\begin{tabular} {|m{8cm}|C{0.75cm}|C{0.75cm}|C{1.5cm}|}
\cline{2-4}
\multicolumn{1}{c|}{} &
Yes & No & Maybe \\
\hline
Some question? &
\ChoiceMenu[ name=Q1, radio, radiosymbol= ]{}{=yes} &
\ChoiceMenu[ name=Q1, radio, radiosymbol= ]{}{=no} &
\ChoiceMenu[ name=Q1, radio, radiosymbol= ]{}{=maybe} \\
\hline
Some other question? &
\ChoiceMenu[ name=Q2, radio, radiosymbol= ]{}{=yes} &
\ChoiceMenu[ name=Q2, radio, radiosymbol= ]{}{=no} &
\ChoiceMenu[ name=Q2, radio, radiosymbol= ]{}{=maybe} \\
\hline
\end{tabular}
\end{table}
\end{Form}
\end{document}
答案1
该宏\LayoutChoiceField{<label>}{<field>}
控制单选按钮的打印方式,并预定义以下效果:
\newcommand*\LayoutChoiceField[2]{#1 #2}
注意标签和字段之间的空格。此空格将字段移到表格的右侧。只需重新定义
\renewcommand*\LayoutChoiceField[2]{#1#2}
去掉它。(#1
如果你从来不想使用标签,你甚至可以省略它,但是为了清晰起见,我还是把它保留下来。)
单选按钮本身的排版也会添加一些空格。这是通过 完成的\@@Radio
,它添加了几个\space
s。我们可以通过在本地\space
不执行任何操作来防止这种情况(使用etoolbox
):
\pretocmd\@@Radio{\begingroup\let\space\@empty}{}{}
\apptocmd\@@Radio{\endgroup}{}{}
我不知道这是否会产生任何意想不到的后果,但我现在想不出任何后果。
总而言之,你的 MWE 现在看起来像这样:
\documentclass{report}
\usepackage{etoolbox}
\usepackage{array}
\usepackage{hyperref}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\makeatletter
\renewcommand*\LayoutChoiceField[2]{#1#2}
\pretocmd\@@Radio{\begingroup\let\space\@empty}{}{}
\apptocmd\@@Radio{\endgroup}{}{}
\makeatother
\begin{document}
\begin{Form}
\noindent\begin{table}[!h]
\begin{tabular} {|m{8cm}|C{0.75cm}|C{0.75cm}|C{1.5cm}|}
\cline{2-4}
\multicolumn{1}{c|}{} &
Yes & No & Maybe \\
\hline
Some question? &
\ChoiceMenu[ name=Q1, radio, radiosymbol= ]{}{=yes} &
\ChoiceMenu[ name=Q1, radio, radiosymbol= ]{}{=no} &
\ChoiceMenu[ name=Q1, radio, radiosymbol= ]{}{=maybe} \\
\hline
Some other question? &
\ChoiceMenu[ name=Q2, radio, radiosymbol= ]{}{=yes} &
\ChoiceMenu[ name=Q2, radio, radiosymbol= ]{}{=no} &
\ChoiceMenu[ name=Q2, radio, radiosymbol= ]{}{=maybe} \\
\hline
\end{tabular}
\end{table}
\end{Form}
\end{document}