我该如何修复该问题并避免在数组中写入双重 &?

我该如何修复该问题并避免在数组中写入双重 &?

我一直在阅读文档和其他一些先前的问题,但我没有发现我在定义中做错了什么,newcolumntype A以便&在写入数组中的列时不写双精度数。

\documentclass{amsart}

\usepackage{amsthm}
\usepackage[main=spanish]{babel}
\usepackage{array}

\theoremstyle{definition} \newtheorem{ejercicio}{Ejercicio}

\newcolumntype{A}{>{\ado~}r}

\newcounter{ado}[ejercicio]
\newcommand*{\ado}
 {\stepcounter{ado} \makebox[2em][r]{\alph{ado}})~}

\begin{document}

\begin{ejercicio} Un ejercicio. %this one has the desired aspect
\[
\begin{array}{rlrlrl}
\ado & 2^1= & \ado & 2^2= & \ado & 2^3= 
\end{array}
\]
\end{ejercicio}

\begin{ejercicio} Otro ejercicio. %the one to be fixed
\[
\begin{array}{AlAlAl}
2^1= && 2^2= && 2^3=
\end{array}
\]
\end{ejercicio}

\end{document}

答案1

让我们看看您对 columntype 的定义A

\newcolumntype{A}{>{\ado~}r}

效果是:放置一个右对齐的列 ( ) 并在其开头r放置用户定义的命令( )。这意味着您创建了一个包含文本的列,您可以将其插入到此单元格中。\ado>{\ado}

在数组的定义中,你使用的AlAlAl含义是:首先有一个右对齐的列,其中添加了额外的文本,然后是一个左对齐的列,没有额外的文本,这两个列重复三次。但你实际上想要做的是只有列和额外文本。

因此有两种可能的解决方案:

  • r从 的定义中删除A,然后使用AlAlAl
  • 保留 的定义A,但AAA仅使用。

此示例显示了两种方式,但将第二种方式定义为B

\documentclass{amsart}

\usepackage{amsthm}
\usepackage[main=spanish]{babel}
\usepackage{array}

\theoremstyle{definition}
\newtheorem{ejercicio}{Ejercicio}

\newcolumntype{A}{>{\ado~}}
\newcolumntype{B}{>{\ado~}r}

\newcounter{ado}[ejercicio]
\newcommand*{\ado}{\stepcounter{ado}\makebox[2em][r]{\alph{ado}})~}

\begin{document}

\begin{ejercicio} Un ejercicio.
\[
\begin{array}{rlrlrl}
\ado & 2^1= & \ado & 2^2= & \ado & 2^3= 
\end{array}
\]
\end{ejercicio}

\begin{ejercicio} Otro ejercicio.
\[
\begin{array}{AlAlAl}
2^1= & 2^2= & 2^3=
\end{array}
\]
\end{ejercicio}

\begin{ejercicio} Tertio ejercicio.
\[
\begin{array}{BBB}
2^1= & 2^2= & 2^3=
\end{array}
\]
\end{ejercicio}

\end{document}

在此处输入图片描述

相关内容