不允许空行的环境

不允许空行的环境

\mpagetc考虑定义为的命令

\newcommandx*\mpagetc[4][1=0.45,2=0.45]{\begin{minipage}{\textheight}%
\begin{minipage}[c]{#1 \textwidth}% 
#3
\end{minipage}%
\begin{minipage}[t]{#2 \textwidth}% 
#4
\end{minipage}%
\end{minipage}}

我得到了错误Paragraph ended before \\mpagec was complete 仅有的当我的代码中有一行空白时,

\mpagetc{
blablabla

blablabla
}{ blablabla}

我对其他不允许空行的命令也遇到了同样的问题。空行有什么问题?

答案1

空行相当于\par;使用带星号的版本\newcommandx*禁止\par在定义的命令内。对于“长”命令(即,允许\par),您应该使用无星号的版本\newcommandx

\documentclass{article}
\usepackage{xargs}

\newcommandx\mpagetc[4][1=0.45,2=0.45]{\begin{minipage}{\textheight}%
\begin{minipage}[c]{#1 \textwidth}% 
#3
\end{minipage}%
\begin{minipage}[t]{#2 \textwidth}% 
#4
\end{minipage}%
\end{minipage}}

\begin{document}

\mpagetc{a 

b}{c}

\end{document}

相同的备注也适用于标准(即,没有xargs\newcommand\newcommand*

答案2

如果您不严格遵守xargs,我建议xparse更改可选参数的顺序:

\usepackage{xparse}

\NewDocumentCommand{\mpagetc}{ O{0.45} +m O{0.45} +m }{%
  \begin{minipage}[t]{#1\textwidth}
  #2
  \end{minipage}%
  \begin{minipage}[c]{#3\textwidth}
  #4
  \end{minipage}%
}

这样你就可以独立地设置这两个因素

\mpagetc{A}{B}

\mpagetc[0.3]{A}{B}

\mpagetc{A}[0.4]{B}

\mpagetc[0.3]{A}[0.4]{B}

通过指定强制参数,+m它们是“长”。

完整例子。

\documentclass{article}

% the following three lines are just for the example
\usepackage[latin]{babel}
\usepackage[margin=1cm]{geometry}
\usepackage{lipsum}

\usepackage{xparse}

\NewDocumentCommand{\mpagetc}{ O{0.45} +m O{0.45} +m }{%
  \begin{minipage}[t]{#1\textwidth}
  #2
  \end{minipage}%
  \begin{minipage}[c]{#3\textwidth}
  #4
  \end{minipage}%
}


\begin{document}
\mpagetc{
  \scriptsize\lipsum[2]

  End.
}{
  \scriptsize\lipsum[4]

  End.
}

\mpagetc[0.3]{
  \scriptsize\lipsum[2]

  End.
}{
  \scriptsize\lipsum[4]

  End.
}

\mpagetc{
  \scriptsize\lipsum[2]

  End.
}[0.3]{
  \scriptsize\lipsum[4]

  End.
}

\mpagetc[0.3]{
  \scriptsize\lipsum[2]

  End.
}[0.5]{
  \scriptsize\lipsum[4]

  End.
}
\end{document}

在此处输入图片描述

相关内容