此表环境mymulticolumn
有三个参数,第一个参数设置可选的\arraystretch
,第二个参数设置“表观”列数(2 或 3),最后一个参数设置某些列的宽度。代码生成了问题标题中指示的错误,这又引发了我的疑问:为什么?
\documentclass{article}
\usepackage{array}
\usepackage{ifthen}
%column specifications
\newcommand{\cs}{\hspace{.5em}}
\newcolumntype{x}{>{\raggedleft\hspace{0pt}}p{1.5em}}
%mymulticolumn
\newenvironment{mymulticolumn}[3][2]{%
\renewcommand{\arraystretch}{#1}
\begin{tabular}
\ifthenelse{#2=2}
{ {@{} x @{\cs} p{#3} x @{\cs} l} }
{ {@{} x @{\cs} p{#3} x @{\cs} p{#3} x @{\cs} l} } }%
{\end{tabular}}
\begin{document}
\begin{mymulticolumn}{2}{1.5in}
1. & $f(x)=x^2$ &
2. & $f(x)=\sqrt{x}$ \\
3. & $f(x)=\ln x$ &
4. & $f(x)=\tan x$
\end{mymulticolumn}
\end{document}
答案1
它不能工作有几个原因,主要原因是 只是\ifthenelse
成为 的参数\begin{tabular}
。第二个原因是 的array
参数\begin{tabular}
没有展开,第三个原因是即使进行了扩展,它也不会起作用,因为\ifthenelse
不是“完全可扩展的”。
放在\ifthenelse
外部:
\newenvironment{mymulticolumn}[3][2]
{%
\renewcommand{\arraystretch}{#1}%
\ifthenelse{#2=2}
{%
\begin{tabular}{@{} x @{\cs} p{#3} x @{\cs} l}%
}
{%
\begin{tabular}{@{} x @{\cs} p{#3} x @{\cs} p{#3} x @{\cs} l}%
}%
}%
{\end{tabular}}