我想排版一个复选框,只需使用 即可$\Box$
。但是,它也应该是 PDF 表单的一部分,可以使用 命令来CheckBox
实现hyperref
。
现在,我需要将这两者结合起来——一个是“文本”的可见且可打印部分的框,以及作为 PDF 表单的功能。
使用 时hyperref
CheckBox
,PDF 文件中不会绘制任何框,除非框作为表单的一部分绘制,即根据 PDF 查看器绘制而不是打印。我希望有一个框作为普通文本的一部分,上面有一个hyperref
CheckBox
。
这应该可以说明问题:
\documentclass{article}
\usepackage{hyperref}
\usepackage{amssymb}
\parindent0pt
\begin{document}
\begin{Form}
\mbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0]{\null}} Option 1\\
$\Box$ Option 2\\
\fbox{\CheckBox[width=10pt,height=10pt,bordercolor=1 1 1]{\null}} Option 3
\end{Form}
\end{document}
第一个“框”以 PDF 的形式工作CheckBox
,并被大多数 PDF 查看器绘制为黑框;然而,在打印时它会消失,并且一些 PDF 查看器会忽略该框。
第二个框只是一个普通的框,它按照要求的方式打印但不是 PDF 表格。
第三个框是fbox
围绕 的CheckBox
,这是理想的结果,只是它的形状很奇怪并且太大——减小 的尺寸CheckBox
以使fbox
变得足够小会导致 无法正常工作(部分隐藏)CheckBox
。
答案1
默认的 Checkbox 字段使用命令进行格式化\LayoutCheckField
,定义如下:
\newcommand\LayoutCheckField[2]{#1 #2}
请注意第一个和第二个参数之间有一个空格。
您可以删除这个空间(这可以修复奇怪的矩形形状),然后进行设置,\fboxsep=0pt
使其\fbox
完美地环绕复选框。
\documentclass{article}
\usepackage{amssymb}
\usepackage{hyperref}
\parindent0pt
\renewcommand\LayoutCheckField[2]{#1#2} % <------------
\fboxsep=0pt % <------------
\begin{document}
\begin{Form}
\mbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0]{\null}} Option 1\\
$\Box$ Option 2\\
\fbox{\CheckBox[width=10pt,height=10pt,bordercolor=1 1 1]{\null}} Option 3
\end{Form}
\end{document}
PDF 中的输出如下所示:
答案2
您需要一个唯一的名称才能\CheckBox
工作。默认名称与标签相同,但在这种情况下标签无效。
无需重新定义,只需在标签中\LayoutCheckField
使用即可。通常,标签和复选符号之间会有一个空格。\ignorespaces
请注意,复选框边框会与靠近它的任何东西重叠,这就是第一个和最后一个复选框略微向左显示的原因。此外,如果将边框设为白色,它将覆盖\fbox
。
起初我对于将其封闭\CheckBox
在里面持怀疑态度\mbox
,但最后的例子表明,否则高度将扩大以匹配行的其余部分。
\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\parindent=0pt
\begin{document}
\begin{Form}
\fboxsep=0pt
\fboxrule=0.9pt
\parskip=2pt
\mbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0,name=first]{\ignorespaces}} enclosed checkbox \par
\fbox{\textcolor{white}{\rule{10pt}{10pt}}} simulated checkbox \par
\fbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0,name=third]{\ignorespaces}} overlaid checkbox \par
\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0,name=bonus]{\ignorespaces} \rule[-5pt]{1pt}{20pt} plain checkbox \par
\end{Form}
\end{document}