我有两个环境ItemBroken
和ItemWorking
。它们的定义有两个不同之处:
ItemBroken
需要 2 个参数,其中ItemWorking
需要 3 个。ItemBroken
已定义之前和之后。ItemWorking
而是采用第三个参数而不需要之后。
使用时,ItemBroken
它会正常工作,直到\end{ItemBroken}
满足条件。这可以在以下 Overleaf 输出中看到:
MVCE:
\documentclass[10pt]{article}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newenvironment{ItemBroken}[2]
{
-
& #1
& \begin{tabular}[t]{@{}L{200pt}@{}}
#2\\
\begin{tabular}{ L{200pt} }
}{
\end{tabular}\\
\end{tabular}
}
\newenvironment{ItemWorking}[3]
{
-
& #1
& \begin{tabular}[t]{@{}L{200pt}@{}}
#2\\
\begin{tabular}{ L{200pt} }
#3
\end{tabular}\\
\end{tabular}
}
\begin{document}
\begin{tabular}{ R{5pt} L{20pt} | p{200pt} }
\ItemWorking{Key}{Title}
{
Item
}\\
\ItemWorking{Key}{Title}
{
Item
}\\
\ItemWorking{Key}{Title}
{
Item
}\\
\begin{ItemBroken}{Key}{Title}
Item
\end{ItemBroken}\\
\ItemWorking{Key}{Title}
{
Item
}
\end{tabular}
\end{document}
答案1
如果你有一个表格,那么你可以有一个命令\foo{a}{b}{c}
来扩展a&b&c
并使用
\begin{tabular}{ccc}
\foo{a}{b}{c}
\end{tabular}
因为
\begin{tabular}{ccc}
a&b&c
\end{tabular}
但是你不能让环境形成\begin{fooenv}{a}{b} c\end{fooenv}
一个\begin
\end
组,所以这将是
\begin{tabular}{ccc}
\begingroup a &b &c \endgroup
\end{tabular}
你不能在一个单元格中开始一个组,而在另一个单元格中结束,
\Itemworking
请注意,您对“应该使用它”的定义\newcommand
仅仅无法给出错误,因为您有一个空白行被视为强制结束代码。