使用核对表时,很难看出哪个文本与哪个复选框相对应。我希望有一条水平线将文本与复选框“连接”,这样我的眼睛就能跟着文本找到相应的复选框。
下面的代码是一次尝试(这不是我自己写的,老实说,我不记得从哪里得到它,但我一直在尝试使它适应我的目的),但它不起作用:
\documentclass[11pt]{article}
\usepackage{wasysym}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage[text={16cm,24cm}]{geometry}
\setlength{\marginparwidth}{1.2in}
\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\-\oldmarginpar[\raggedleft #1]%
{\raggedright #1}}
\newenvironment{checklist}{%
\begin{list}{}{}
\let\olditem\item
\renewcommand\item{\olditem -- \marginpar{$\framebox(15,15){}$ $\framebox(15,15){}$} }
\newcommand\itemline{\olditem -- \marginpar{\rule[-0.5ex]{0.5\marginparwidth}{0.4pt} $\framebox(15,15){}$ $\framebox(15,15){}$}}
}{%
\end{list}
}
\begin{document}
\begin{checklist}
\item Item1
% \itemline Item2
\end{checklist}
\end{document}
在此代码中,“item”命令在末尾仅创建文本和一对复选框。
“itemline”命令应该执行相同的操作,但还会添加前面提到的水平线。
为什么它不能按预期工作?我一直在尝试摆弄它,但却无法让它正常工作。
答案1
扩展\itemline
涉及
\marginpar{\rule[-0.5ex]{0.5\marginparwidth}{0.4pt} ...}
随着你\marginpar
对此的重新定义
\oldmarginpar[\raggedleft \rule[-0.5ex]{0.5\marginparwidth}{0.4pt} ...]{\raggedright \rule[-0.5ex]{0.5\marginparwidth}{0.4pt} ...}
% from here--> <--to here
现在的问题是,对可选参数的扫描\oldmarginpar
会收集到第一个之前的所有内容]
,因此可选参数现在是
\oldmarginpar[\raggedleft \rule[-0.5ex
混乱随之而来。您可以通过添加适当的括号来隐藏括号\rule
,但我只会使用完全不同的代码。例如
\documentclass{article}
\usepackage[text={16cm,24cm}]{geometry}
\newenvironment{checklist}{%
\let\olditem=\item
\def\item{\olditem\def\item{\addlineandboxes\olditem}}%
\list{--}{}%
}{%
\addlineandboxes\endlist
}
\newcommand*{\mycheckbox}{\hbox{\vrule\vbox{\hrule width2ex \kern2ex\hrule}\vrule}}
\newcommand*{\addlineandboxes}{\hrulefill\rlap{\space\mycheckbox\space\mycheckbox}}
\begin{document}
\begin{checklist}
\item Item1
\item Item2 long text such that it takes more than one line long text such that it takes more than one line
\item Item3
\end{checklist}
\end{document}
这使
根据需要调整参数。
(顺便一提:\usepackage[latin1]{inputenc}
??我非常怀疑你想要那。并且babel
没有语言的加载也不是完全有用的。)