在 Windows 上将 MiKTeX 与 PDFLaTeX 结合使用
我想创建一个包含两个小页面的环境;第一个小页面有一个描述项,第二个小页面有一个小文本(或图片)。这段代码按我想要的方式工作:
{
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[Label] Description
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
Second minipage
\end{minipage}
}
我想创建一个宏或环境,以便于我轻松引入此类内容。因此,我创建了以下带有两个参数的环境:
\newenvironment{myenvironment}[2]% 1:label, 2:second minipage text
{%
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] % Description
}%
{%
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
#2
\end{minipage}
}
但当我尝试使用它时
\begin{myenvironment}{Label}{Second minipage text}
Description text
\end{myenvironment}
我得到了Illegal parameter number in definition of \endmyenvironment.
指向完成newenvironment
声明的那一行的错误。经过几个小时的努力,我尝试使用双哈希(##
),并得到了两个不同的新错误:You can't use `macro parameter character #' in restricted horizontal mode
和You can't use `macro parameter character #' in internal vertical mode
。这一次,当我想使用环境时,错误指向了行,但对定义没有任何抱怨。
我究竟做错了什么?
答案1
这##
与我的问题无关。似乎您不能在自定义环境的结束代码中使用参数。有解决方法,但我认为这应该是一定有功能。使用一个可能的解决方法——辅助变量——,我得到了这个工作环境:
\newenvironment{myenvironment}[2]%
{%
\def\myenvargumentII{#2}
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] % Description
}%
{%
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
\myenvargumentII
\end{minipage}
}
这个解决方案来得有点晚。与此同时,我已经设法用带有3 个参数的\newcommand
a解决了我的问题:
\newcommand{\myminipages}[3]% 1:label, 2:secondminipage, 3:Description
{%
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] #3
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
#2
\end{minipage}
\medskip % vertical space
}
可与以下产品配合使用:
\myminipages{Label}{Second minipage text}{Description text}
希望能帮助到你。
[a] 看起来该newcommand
方法与该newenvironment
方法相比并没有什么特别的优势,至少对于这种用途而言。更多这里和这里。