我想multicol
在我自己的环境中使用 -package 通过使用计数器,它看起来像
\newenvironment{Test}{\ifnum\theCnt=1%
\begin{multicols}{1}
\else
\begin{multicols}{2}
\fi}{\end{multicols}}
理论上这绝对是可能的,但我现在想扩展它,因为我的Test
环境中还有更多环境。它看起来像
\begin{Test}
\begin{A}
\end{A}
\begin{B}
\end{B}
\begin{A}
\end{A}
\begin{B}
\end{B}
\end{Test}
现在有趣的部分是环境A
和B
正在修改计数器,即第一次出现的环境A
和B
应该设置为单列环境,但每个进一步的环境都应该设置为双列环境,因此不可能简单地修改环境定义。
另一个问题是我想将后两个环境作为单列,即对于输入 \begin{Test} \begin{A} \end{A} \begin{B} \end{B} \begin{A} \end{A} \begin{B} \end{B} \begin{A} \end{A} \begin{B} \end{B} \end{Test} ,结果应该是这样的
A
B
A A
B B
如果我这样写,也可以达到同样的效果
\begin{Test1}
\begin{A}
\end{A}
\begin{B}
\end{B}
\end{Test1}
\begin{Test2}
\begin{A}
\end{A}
\begin{B}
\end{B}
\begin{A}
\end{A}
\begin{B}
\end{B}
\end{Test2}
定义Test1
单列环境和Test2
多列环境。但我想将所有内容放在一个名为的环境中Test
。
这可能吗?如果可以,怎么做?
答案1
这是一个解决方案。使用来自电子工具箱
\documentclass{article}
\usepackage{multicol}
\newif\iffirst
\newenvironment{Test}{\section{AB}}{[stuff]}
\newenvironment{A}{\section{A}}{\hrulefill}
\newenvironment{B}{\section{B}}{\dotfill}
\usepackage{etoolbox}
\AtBeginEnvironment{Test}{\firsttrue}
\AfterEndEnvironment{B}{\iffirst\firstfalse\begin{multicols}{2}\fi}
\AtEndEnvironment{Test}{\iffirst\else\end{multicols}\fi}
\begin{document}
bla bla
\begin{Test}
\begin{A}
AAAA
\end{A}
\begin{B}
BBBBB
\end{B}
\begin{A}
AAAA
\end{A}
\begin{B}
BBBBB
\end{B}
\begin{A}
AAAA
\end{A}
\begin{B}
BBBBB
\end{B}
\end{Test}
\begin{Test}
\begin{A}
AAAA
\end{A}
\begin{B}
BBBBB
\end{B}
\end{Test}
\end{document}