我正在尝试应用以下答案:https://tex.stackexchange.com/a/72916/25124
这段代码有什么问题?我试图定义一个宏来指定一个有 3 列但中间列始终为箭头的表格。看起来错误来自 \begin{tabular},但我不确定。
\documentclass[a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{array}
\title{Your Paper}
\author{You}
\begin{document}
\newif\ifrulesetSep
\newcommand*{\ruleset}[1]{%
\begin{center}\begin{tabular}[rcl]
\rulesetSepfalse
\ruleScan#1\relax\relax
}
\newcommand{\ruleScan}[2]{%
\ifx\relax#1
\end{tabular}\end{center}
\else
\ifrulesetSep
\\
\else
\rulesetSeptrue
\fi
#1 & $\rightarrow$ & #2
\expandafter\ruleScan
\fi
}
\ruleset{
{A}{B C}
{B}{b}
{C}{c A B}
}
\end{document}
我得到了错误
包数组错误:非法前缀标记(\rulesetSepfalse):使用了‘c’。
答案1
表格的列规范是强制性的,不是可选的,因此 {}
不是[]
,并且您的开关将无法按书面形式工作,因为每个表格单元格都是一个组,因此每次true/false
设置都会丢失&
\\
\documentclass[a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{array}
\title{Your Paper}
\author{You}
\begin{document}
\newcommand*{\ruleset}[1]{%
\begin{center}\begin{tabular}{rcl}%%
\ruleScan#1\relax\relax
}
\newcommand{\ruleScan}[2]{%
\ifx\relax#1%%
\end{tabular}\end{center}%
\else
#1 & $\rightarrow$ & #2\\%%
\expandafter\ruleScan
\fi
}
\ruleset{
{A}{B C}
{B}{b}
{C}{c A B}
}
\end{document}