\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}