我尝试使用 tabularx 定义一个新环境。我知道 tabularx 不是一个真实的环境。
这是我正在尝试做的一个最简单的例子。
\documentclass[]{article}
\usepackage{tabularx}
\usepackage[a4paper, margin=1cm]{geometry}
\newcounter{NumBoxes}
\def \boxy{
& stuff \theNumBoxes & stuff \ifodd\value{NumBoxes}{ \arraybackslash } \fi \stepcounter{NumBoxes}}
\newenvironment{boxes}{
\setcounter{NumBoxes}{0}
\tabularx{\textwidth}{|X|X|X|}}
{\endtabularx}
\begin{document}
\begin{boxes}
\boxy \boxy
\boxy \boxy
\end{boxes}
\end{document}
基本上我把东西放在第二列和第三列。用 替换\arraybackslash
也\\
不起作用。
答案1
您想做什么还不太清楚。但在您的示例中,您不需要\arraybackslash
:
\documentclass[]{article}
\usepackage{tabularx}
\usepackage[a4paper, margin=1cm]{geometry}
\newcounter{NumBoxes}
\newcommand*\boxy{% avoid \def in LaTeX
& stuff \theNumBoxes & stuff \stepcounter{NumBoxes}\tabularnewline
}
\newenvironment{boxes}{%
\setcounter{NumBoxes}{0}%
\tabularx{\textwidth}{|X|X|X|}%
}
{\endtabularx}
\begin{document}
\begin{boxes}
\boxy \boxy
\boxy \boxy
\end{boxes}
\end{document}
结果是
\tabularnewline
您也可以使用,只要\\
您不对最后一列使用\raggedright
或\raggedleft
之类的东西即可:\centering
\documentclass[]{article}
\usepackage{tabularx}
\usepackage[a4paper, margin=1cm]{geometry}
\newcounter{NumBoxes}
\newcommand*\boxy{% avoid \def in LaTeX
& stuff \theNumBoxes & stuff \stepcounter{NumBoxes}\\
}
\newenvironment{boxes}{%
\setcounter{NumBoxes}{0}%
\tabularx{\textwidth}{|X|X|X|}%
}
{\endtabularx}
\begin{document}
\begin{boxes}
\boxy \boxy
\boxy \boxy
\end{boxes}
\end{document}
有关更多信息\arraybackslash
以及如何使用它,请参阅手册array
。您会发现,这\arraybackslash
不是 的替代品\\
,而是重新定义\\
为“新表格行”命令,而不是“新行”命令。正如已经说过的,只有在您使用命令时才需要这样做,重新定义\\
之前,例如,
\documentclass[]{article}
\usepackage{tabularx}
\usepackage[a4paper, margin=1cm]{geometry}
\newcounter{NumBoxes}
\newcommand*\boxy{% avoid \def in LaTeX
& stuff \theNumBoxes & stuff \stepcounter{NumBoxes}\\
}
\newenvironment{boxes}{%
\setcounter{NumBoxes}{0}%
\tabularx{\textwidth}{|X|>{\centering}X|>{\raggedleft\arraybackslash}X|}%
}
{\endtabularx}
\begin{document}
\begin{boxes}
\boxy \boxy
\boxy \boxy
\end{boxes}
\end{document}