为什么将检查表框放在左侧

为什么将检查表框放在左侧

我只是按照这里描述的方式创建了一个简单的检查清单:如何生成清单?,我的代码如下:

\documentclass[a4paper,notitlepage]{article}
\usepackage[]{ctex}
\setCJKmainfont{SimSun}
\usepackage{graphicx}
\usepackage[twocolumn]{geometry}
\usepackage{amssymb}
\usepackage{array}
\newcounter{rowno}
\setcounter{rowno}{0}
\usepackage[export]{adjustbox}  % draw frame of the image
\geometry{verbose,tmargin=1cm,bmargin=1cm,lmargin=1cm,rmargin=1cm,headheight=1cm,headsep=1cm,footskip=1cm}


\usepackage{wasysym}     

\setlength{\marginparwidth}{1.2in}
\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\-\oldmarginpar[\raggedleft #1]%
{\raggedright #1}}    

\newenvironment{checklist}{%
  \begin{list}{}{}% whatever you want the list to be
  \let\olditem\item
  \renewcommand\item{\olditem -- \marginpar{$\Box$} }
  \newcommand\checkeditem{\olditem -- \marginpar{$\CheckedBox$} }
}{%
  \end{list}
}   

\begin{document}
\begin{checklist}
  \checkeditem   Open the \TeX book
  \checkeditem   Find the good page
  \item   Try to understand
\end{checklist}
\end{document}

问题是,这里我使用了两列选项,但你看到复选框被放在了左边,为什么?你能帮我吗,谢谢。

请参阅下面的屏幕截图:

左页上的复选框

编辑:这是新代码。我使用

\documentclass[a4paper,notitlepage]{article}
\usepackage{graphicx}
\usepackage[twocolumn]{geometry}
\usepackage{amssymb}
\usepackage{array}
\usepackage[export]{adjustbox}  % draw frame of the image
\geometry{verbose,tmargin=1cm,bmargin=1cm,lmargin=1cm,rmargin=1cm,headheight=1cm,headsep=1cm,footskip=1cm}

\usepackage{wasysym}

\setlength{\columnseprule}{0.4pt}
\setlength{\columnsep}{0.5in}

\newcommand\numitem[1]{\item #1 \hfill $\Box$}%
\newcommand\nonnumitem[1]{\item[--] #1 \hfill $\Box$}%


\begin{document}

\begin{enumerate}
  \numitem{Open the \TeX book Open the \TeX book Open the abc}
  \numitem{Find the good page}
  \nonnumitem{Try to understand}
\end{enumerate}

\newpage

\begin{enumerate}
  \numitem{Open the \TeX book Open the \TeX book Open the abcdefg}
  \numitem{Find the good page}
  \nonnumitem{Try to understand}
\end{enumerate}

\end{document} 

我发现了一个错误,有时候,框没有放在列的右侧,请参见下面的屏幕截图: 左侧显示的框

那么,有什么办法可以解决这个问题吗?谢谢。

编辑2 我发现了一些可以解决这个问题的代码片段(强制框转到右侧),只需将代码更改为:

\newcommand\numitem[1]{\item #1 \unskip\linebreak[0]\enspace\hbox{}\nobreak\hfill$\Box$}%
\newcommand\nonnumitem[1]{\item[--] #1 \unskip\linebreak[0]\enspace\hbox{}\nobreak\hfill$\Box$}%

然后,我可以修复这个错误,但是有人能告诉我代码是什么意思吗?谢谢。

答案1

您所指的解决方案在双列模式下不起作用,因为\marginpar当您在左列时,用于打印的边距是左边距,而当您在右列时,用于打印的边距是右边距。

这是一个简单的解决方案,不使用边距来打印复选框,但它远非完美。

我定义了两个新命令

\newcommand\noncheckeditem[1]{\item[--] #1 \hfill $\Box$}%
\newcommand\checkeditem[1]{\item[--] #1 \hfill $\CheckedBox$}%

当您需要未选中项和选中项时分别使用。

您可以在正常description环境中使用它们,如下所示:

\documentclass[a4paper,notitlepage]{article}
\usepackage{graphicx}
\usepackage[twocolumn]{geometry}
\usepackage{amssymb}
\usepackage{array}
\usepackage[export]{adjustbox}  % draw frame of the image
\geometry{verbose,tmargin=1cm,bmargin=1cm,lmargin=1cm,rmargin=1cm,headheight=1cm,headsep=1cm,footskip=1cm}

\usepackage{wasysym}

\setlength{\columnseprule}{0.4pt}
\setlength{\columnsep}{0.5in}

\newcommand\noncheckeditem[1]{\item[--] #1 \hfill $\Box$}%
\newcommand\checkeditem[1]{\item[--] #1 \hfill $\CheckedBox$}%

\begin{document}

\begin{description}
  \checkeditem{Open the \TeX book}
  \checkeditem{Find the good page}
  \noncheckeditem{Try to understand}
\end{description}

\newpage

\begin{description}
  \checkeditem{Open the \TeX book}
  \checkeditem{Find the good page}
  \noncheckeditem{Try to understand}
\end{description}

\end{document} 

结果:

在此处输入图片描述

请注意,我在左列和右列各打印了一个,只是为了看看它们看起来怎么样。为此,我还添加了以下几行

\setlength{\columnseprule}{0.4pt}
\setlength{\columnsep}{0.5in}

还请注意,您的左右边距geometry太小,您会收到警告。您应该3.5cm同时放置类似lmargin和 的内容rmargin

相关内容