如何排版单选按钮?

如何排版单选按钮?

虽然在 LaTeX 中排版复选框(选中或未选中)很容易(例如,使用wasysym),但我没有找到任何排版单选按钮的方法。我当然可以使用 TikZ,但有没有更“轻量级”的方法(即使用某种字体或组合现有字符)?这很接近:

\documentclass{article}

\usepackage{wasysym}

\begin{document}

\begin{itemize}
\item[$\ocircle$] foo
\item[$\odot$] bar
\item[$\ocircle$] baz
\end{itemize}
\end{document}

但里面的点\odot可能有点太浅了。

有什么建议么?

注意:我对 PDF 表格根本不感兴趣;我想要一个可打印的文档,其中明确指示列表中的一个元素是可选择的(即单选测试)。

答案1

可以通过 TikZ 绘制选中和未选中的单选按钮:

\documentclass{article}

\usepackage{tikz}

\makeatletter
\newcommand*{\radiobutton}{%
  \@ifstar{\@radiobutton0}{\@radiobutton1}%
}
\newcommand*{\@radiobutton}[1]{%
  \begin{tikzpicture}
    \pgfmathsetlengthmacro\radius{height("X")/2}
    \draw[radius=\radius] circle;
    \ifcase#1 \fill[radius=.6*\radius] circle;\fi
  \end{tikzpicture}%
}
\makeatother

\begin{document}

\begin{itemize}
\item[\radiobutton] foo
\item[\radiobutton*] bar
\item[\radiobutton] baz
\end{itemize}
\end{document}

结果

阴影和球的一些变化:

\documentclass{article}

\usepackage{tikz}

\makeatletter
\newcommand*{\radiobutton}{%
  \@ifstar{\@radiobutton0}{\@radiobutton1}%
}
\newcommand*{\@radiobutton}[1]{%
  \begin{tikzpicture}
    \pgfmathsetlengthmacro\radius{height("X")/2}
    \draw[radius=\radius,
      preaction={
        draw=gray,
        transform canvas={
          xshift=.7\pgflinewidth,
          yshift=-.7\pgflinewidth,
        },
      },  
      preaction={fill=white},
    ] circle;
    \ifcase#1
      \fill[
        radius=.6*\radius,
        shade,
        shading=ball,
        ball color=black,
      ] circle;
    \fi
  \end{tikzpicture}%
}
\makeatother

\begin{document}

\begin{itemize}
\item[\radiobutton] foo
\item[\radiobutton*] bar
\item[\radiobutton] baz
\end{itemize}
\end{document}

带阴影和球的结果

答案2

可能是这样的:

\documentclass{article}

\usepackage{wasysym}
\newcommand{\radio}{\ooalign{\hidewidth$\bullet$\hidewidth\cr$\ocircle$}}


\begin{document}

\begin{itemize}
\item[$\ocircle$] foo
\item[$\odot$] bar
\item[$\ocircle$] baz
\item[\radio] baz
\end{itemize}
\end{document}

如果您愿意,您可以使用\scalebox并调整其尺寸。\bullet

在此处输入图片描述

答案3

在这里我使用\stackinset将 放置\bullet在缩放的 内部\circ

\documentclass[12pt]{article}
\usepackage[usestackEOL]{stackengine}
\usepackage{graphicx}
\makeatletter
\newcommand*{\radiobutton}{\@ifstar{\radiobuttonON}{\radiobuttonOFF}}
\makeatother
\def\radiobuttonON{\raisebox{-1.5pt}{\stackinset{c}{}{c}{.35pt}{$\bullet$}{\scalebox{2}{$\circ$}}}}
\def\radiobuttonOFF{\raisebox{-1.5pt}{\scalebox{2}{$\circ$}}}
\begin{document}
\begin{itemize}
\item[\radiobutton] foo
\item[\radiobutton*] bar
\item[\radiobutton] baz
\end{itemize}
\end{document}

在此处输入图片描述

相关内容