当结果样式为文本时,有没有办法对齐 xlop 方程式
\documentclass[20pt,fleqn,leqno]{extarticle}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{xlop}% http://ctan.org/pkg/xlop
\begin{document}
\begin{enumerate}[label={\arabic*)}]
\item { \opadd[style=text] {61}{7} }
\item {\opadd[style=text] {1}{7} }
\item {\opadd[style=text] {161}{7} }
\item {\opadd[style=text] {1}{700} }
\end{enumerate}
\end{document}
电流输出
所需输出(运算符和等号对齐,如果可以进行位值对齐那就太好了)。
由于某种原因,我只能使用 xlop,但如果 xlop 无法实现,我会考虑其他常规数学方程选项。
ps:尝试将解决方案保留为 xlop,因为输出是在较大的程序中有条件生成的 - 不使用带有样式文本的 opadd 将需要访问我没有的代码。非常感谢提出的解决方案。
答案1
我认为不可能改变输出来xlop
满足问题的深奥需求,即使得第一个数字右对齐,第二个数字左对齐,使用在调用问题 1 时无法完全知道的字段宽度。
但是,如果将问题简化为使用标准xlop
输出,但在等号处对齐,那么就可以做到。
对于仅涉及加法和正数的示例问题,可以这样做。基本上,我使用 来\numexpr
计算结果,并在右对齐结果的末尾添加适当数量的空格。\mopadd
宏的字段宽度在定义中指定\mopwid
。
\documentclass[20pt,fleqn,leqno]{extarticle}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{xlop}% http://ctan.org/pkg/xlop
\def\mopwid{1.8in}
\newcommand\mopadd[2]{\makebox[\mopwid][r]{%
\opadd[style=text] {#1}{#2}%
\ifnum\numexpr#1+#2\relax<1000\relax\phantom{0}\fi%
\ifnum\numexpr#1+#2\relax<100\relax\phantom{0}\fi%
\ifnum\numexpr#1+#2\relax<10\relax\phantom{0}\fi%
}}
\begin{document}
\begin{enumerate}[label={\arabic*)}]
\item { \mopadd{61}{7} }
\item {\mopadd{1}{7} }
\item {\mopadd{161}{7} }
\item {\mopadd{1}{700} }
\end{enumerate}
\end{document}
正如 AndreC 所指出的,该问题实际上是为家庭中的某些事情而提出的align
,而不是xlop
,因为必须提前提供所有 4 个问题才能知道正确的字段宽度。
答案2
我不确定你是否想要这个,因为对齐会相当奇怪。
\documentclass{article}
\usepackage{array,xlop}
\newenvironment{additions}
{%
\par
\vspace{\topsep}%
\setcounter{enumi}{0}%
\renewcommand{\theenumi}{(\arabic{enumi})}%
\renewcommand{\item}{%
\refstepcounter{enumi}%
\makebox[\labelwidth][r]{\theenumi}%
}%
\renewcommand{\opadd}[3][]{&##2&##3&\the\numexpr##2+##3\relax}%
\noindent
\tabular{
@{}
c
>{$}r<{$}
@{${}+{}$}
>{$}l<{$}
@{${}={}$}
l
@{}
}
}{%
\endtabular
\par\vspace{\topsep}%
}
\begin{document}
\begin{additions}
\item \opadd[style=text]{61}{7} \\
\item \opadd[style=text]{1}{7} \\
\item \opadd[style=text]{161}{7} \\
\item \opadd[style=text]{1}{700} \\
\end{additions}
\end{document}
答案3
简单来说array
:
\documentclass[20pt,fleqn,leqno]{extarticle}
\newcounter{No}
\newcommand\opadd[2]{\stepcounter{No}(\theNo) & #1 & #2 & \the\numexpr#1+#2\relax}
\begin{document}
$\begin{array}{r @{\quad} r @{\,+\,} l @{\,=\,} l }
\opadd{61}{7} \\
\opadd{1}{7}\\
\opadd{161}{7}\\
\opadd{1}{700} \\
\end{array}$
\end{document}
下一个数组需要前面的\setcounter{No}{0}