我一直在阅读文档和其他一些先前的问题,但我没有发现我在定义中做错了什么,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}