当 resultstyle=text 时,多个方程的 xlop 对齐

当 resultstyle=text 时,多个方程的 xlop 对齐

当结果样式为文本时,有没有办法对齐 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}

在此处输入图片描述

相关内容