我正在尝试创建一个如下所示的新环境:
\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}
但是我的 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
只在环境内部定义,但这是一种可能的风格选择。
你哪里做错了?
\item
不接受争论。\item{\textbf{##1} / \emph{##2} // ##3\}
有一个不需要的斜线和一个不需要的双斜线;此外,\}
没有平衡左括号。\begin{multicols}[2]
是错误的:列数是必需的参数\begin{multicols}{2}
在(修复上一个错误之后)之后打开括号是错误的:multicols
是一个环境,因此它不将要排版在多列中的文本作为参数。