家庭作业解决方案 x 列

家庭作业解决方案 x 列

我正在写一本书,在书的最后,我写下了练习答案。为了获得更好的布局,我使用了multicols如下环境:

\begin{multicols}{2}
\setlength{\columnseprule}{0.4pt}
  \begin{enumerate}
    \item answer 1
    \item answer 2
  \end{enumerate}
\end{multicols}

但是,当练习包含两个或更多项(如 1a) 1b)时,如果我在另一个multicols环境中编写这些解决方案,垂直线就会延伸到它。我尝试使用\setlength{\columnseprule}{0.0pt}它来修复它,但当我这样做时,它会擦除​​垂直线。

我得到了这样的信息:

1.          # 6. 
2a)  | b)   # 7.
 c)  | d)   # 8.
3.          # 9.
4.          # 10.
5.          # 11.  

其中#表示主垂直线(我想要保留)并且|表示练习的垂直线(我试图使用 擦除0.0pt)。

我希望你理解我的问题。

谢谢 :)

答案1

您可以在列数后使用可选参数来指定要在环境之前执行的代码。这是一个最小示例(就像您将其放入问题中会很有帮助的示例一样)。

\documentclass{article}
\usepackage{multicol}
\usepackage{etoolbox}
\setlength{\columnseprule}{.4pt}
\begin{document}
\begin{multicols}{2}
  \begin{enumerate}
    \item answer 1
    \begin{multicols}{2}[\setlength{\columnseprule}{0pt}]
    \begin{enumerate}
    \item Foo
    \item Barr
    \item Foo
    \item bar
    \end{enumerate}
    \end{multicols}
    \item answer 2
  \end{enumerate}
\end{multicols}
\end{document}

代码输出

答案2

您可以使用本地值:

\documentclass{article}
\usepackage{multicol}

\begin{document}
\begin{multicols}{2}
\setlength{\columnseprule}{0.4pt}
  \begin{enumerate}
    \item answer 1
{% here (P.S)
\setlength{\columnseprule}{0pt}
\begin{multicols}{2}
  \begin{enumerate}
    \item answer 1
    \item answer 2
  \end{enumerate}
\end{multicols}}
    \item answer 2
  \end{enumerate}
\end{multicols}
\end{document}

在此处输入图片描述

相关内容