对于某个项目,我试图将某些内容排版成大致如下的形式:
1234
321
12345
6
----- +
13906
我见过人们这样做,xlop
将两个值相加,效果很好,但array
将更多值相加,就不理想了。
是否有任何方便的包可以(类似)用于多个值?
答案1
此答案不像 那样在数字之间提供额外的间距xlop
,但提供了多加数加法。
\documentclass{article}
\usepackage{xlop}
\usepackage{stringstrings,stackengine}
%%% \showsum based on http://tex.stackexchange.com/questions/219090/
%%% writing-manual-summation-of-two-numbers/219113#219113
\newcounter{mysum}
\newcommand\showsum[1]{%
\convertchar[q]{#1}{ }{+}%
\setcounter{mysum}{\numexpr\thestring\relax}%
\def\stackalignment{r}%
\edef\tmp{\themysum}%
{\stackunder{\underline{\ \Longstack{#1}}}{%
\tmp}\raisebox{-\dp\strutbox}{\,+}}%
}
\begin{document}
\opadd{12}{12}
\showsum{1 2 3 4} $\qquad$
\showsum{23 567 34 32} $\qquad$
\showsum{1 3567 2334 3352 567}
\end{document}
答案2
这是一个简单的语法:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\addition}{O{c}m}
{
\seq_set_split:Nnn \l_bert_addition_seq { + } { #2 }
\begin{array}[#1]{@{}r@{\;}l}
\seq_use:Nn \l_bert_addition_seq { \\ } \\[-.5ex]
\additionrule \\[-.5ex]
\int_eval:n { #2 }
\end{array}
}
\seq_new:N \l_bert_addition_seq
\ExplSyntaxOff
\newcommand{\additionrule}{%
\leaders\hrule height \dimexpr \fontdimen22\textfont2+0.2pt\relax
depth \dimexpr -\fontdimen22\textfont2+0.2pt\relax
\hfill\hspace*{0pt} & +
}
\begin{document}
\[
\addition{1234+321+12345+6}
\]
\end{document}
的可选参数\addition
可以是t
,b
或者c
,并传递给array
。
答案3
由于我无法对此发表评论(声誉不够),因此我将发布此答案。您必须在数学环境中执行此操作吗?我认为您可以在表格环境中轻松完成此操作。
编辑:因为有人要求:
\documentclass{article}
\begin{document}
\begin{tabular}{rr}
&1234\\
+&321\\
+&12345\\
+&6\\
\hline
&13906
\end{tabular}
\end{document}
请注意,这不会计算结果。另请注意,这会在每一行前面放置一个“+”,而不是在 \hline 旁边。为此使用:
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{rr}
1234 & \\
321 & \\
12345 & \\
6 & \multirow{2}{*}{+}\\
\cline{1-1}
13906 & \\
\end{tabular}
\end{document}