有关 \newenvironment 的帮助

有关 \newenvironment 的帮助

我正在尝试创建一个如下所示的新环境:

\documentclass{article}
\usepackage{fontspec}
\usepackage{multicol}

\setlength{\columnseprule}{1pt}
\def\columnseprulecolor{\color{black}}

\newenvironment{program}{
\newcommand{\innslag}[3]{ \item{\textbf{##1} / \emph{##2} // ##3\} }
\begin{multicols}[2]{
\begin{description}
}
{
\end{description}
}
\end{multicols}
}

\begin{document}

\begin{program}
\innslag{test1}{test}{test}
...etc
\end{program}

\end{document}

重现此内容:

\documentclass{article}
\usepackage{fontspec}
\usepackage{multicol}

\setlength{\columnseprule}{1pt}
\def\columnseprulecolor{\color{black}}

\begin{document}

\begin{multicols}{2}
\begin{description}
\item \textbf{Heading 1} \emph{(Heading 2)}
    \\ Heading 3
\item \textbf{Heading 1} \emph{(Heading 2)}
    \\ Heading 3
\item \textbf{Heading 1} \emph{(Heading 2)}
    \\ Heading 3
\item \textbf{Heading 1} \emph{(Heading 2)}
    \\ Heading 3
\item \textbf{Heading 1} \emph{(Heading 2)}
    \\ Heading 3
\item \textbf{Heading 1} \emph{(Heading 2)}
    \\ Heading 3
\end{description}
\end{multicols}

\end{document}

看起来应该是这样的: tex 示例

但是我的 LaTeX-Fu 还没有准备好,所以我无法让我的环境工作。我做错了什么?

答案1

很难列出你所犯的所有错误。;-)

让我从正确的解决方案开始:

\documentclass{article}
\usepackage{multicol}

\setlength{\columnseprule}{1pt}

\newenvironment{program}
 {% begin part
  \newcommand{\innslag}[3]{\item \textbf{##1} (\emph{##2})\\##3}%
  \begin{multicols}{2}
  \begin{description}
 }
 {% end part
  \end{description}
  \end{multicols}
 }

\begin{document}

\begin{program}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\innslag{test1}{test}{test}
\end{program}

\end{document}

在此处输入图片描述

实际上,我不确定为什么\innslag只在环境内部定义,但这是一种可能的风格选择。

你哪里做错了?

  1. \item不接受争论。

  2. \item{\textbf{##1} / \emph{##2} // ##3\}有一个不需要的斜线和一个不需要的双斜线;此外,\}没有平衡左括号。

  3. \begin{multicols}[2]是错误的:列数是必需的参数

  4. \begin{multicols}{2}在(修复上一个错误之后)之后打开括号是错误的:multicols是一个环境,因此它不将要排版在多列中的文本作为参数。

相关内容