\\ 表示宏中的 tabularx

\\ 表示宏中的 tabularx

我尝试使用 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 或 \\

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

使用 \centering 和 \raggedright\arraybackslash

相关内容