在固定大小的表格列中对齐表单单选按钮

在固定大小的表格列中对齐表单单选按钮

我必须使用 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,它添加了几个\spaces。我们可以通过在本地\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}

MWE 输出

相关内容