두 숫자의 수동 합계 작성

두 숫자의 수동 합계 작성

TeX에서 숫자의 수동 합계를 어떻게 작성하시겠습니까? 즉, 다음과 같습니다(반드시 동일하지는 않음).

                                                 

답변1

가능한 해결책 중 하나는 간단한 테이블일 수 있습니다.

\begin{table}[h]
\begin{tabular}{r}
1234  \\
345   \\
+6543 \\
345   \\ \hline
8467 
\end{tabular}
\end{table}

편집: 결과는 다음과 같습니다. 여기에 이미지 설명을 입력하세요

답변2

재미삼아 이 자동화된 대안을 제공합니다. \convertchar공간으로 분리된 입력을 +분리된 입력 으로 변환 하여 \numexpr적용할 수 있습니다. 결과를 구성하기 위해 오른쪽 정렬 스택을 사용합니다.

\documentclass{article}
\usepackage{stringstrings,stackengine}
\newcounter{mysum}
\newcommand\showsum[1]{%
  \convertchar[q]{#1}{ }{+}%
  \setcounter{mysum}{\numexpr\thestring\relax}%
  \def\stackalignment{r}%
  {\ttfamily\stackunder{\underline{+\Longstack{#1}}}{\themysum}}%
}
\begin{document}
\showsum{1 2 3 4}  $\qquad$
\showsum{23 567 34 32}  $\qquad$
\showsum{1 3567 2334 3352 567}
\end{document}

여기에 이미지 설명을 입력하세요

답변3

계산은 TeX에 맡기세요.;-)

\documentclass{article}
\usepackage{xparse,array,booktabs}

\ExplSyntaxOn
\NewDocumentCommand{\computesum}{sO{}m}
 {
  \chubakueno_computesum:n { #3 }
  \IfBooleanTF{#1}
   {
    \ensuremath { \int_to_arabic:n { \l_chubakueno_sum_int } }
   }
   {
    \group_begin:
    \chubakueno_typesetsum:n { #2 }
    \group_end:
   }
 }

\int_new:N \l_chubakueno_sum_int
\seq_new:N \l_chubakueno_summands_seq
\seq_new:N \l_chubakueno_output_summands_seq
\seq_new:N \l__chubakueno_temp_seq
\tl_new:N \l_chubakueno_total_tl
\tl_new:N \l__chubakueno_temp_tl
\cs_generate_variant:Nn \int_set:Nn { Nx }

\keys_define:nn { chubakueno/sum }
 {
  spacing .dim_set:N = \l_chubakueno_spacing_dim,
  align   .tl_set:N  = \l_chubakueno_align_tl,
  align   .initial:n = c,
 }

\cs_new_protected:Npn \chubakueno_computesum:n #1
 {
  \int_set:Nn \l_chubakueno_sum_int { #1 }
  \seq_set_split:Nnn \l_chubakueno_summands_seq { + } { #1 }
 }

\cs_new_protected:Npn \chubakueno_typesetsum:n #1
 {
  \keys_set:nn { chubakueno/sum } { #1 }
  \dim_compare:nTF { \l_chubakueno_spacing_dim = 0pt }
   {% do nothing if the space is zero
    \seq_set_eq:NN \l_chubakueno_output_summands_seq  \l_chubakueno_summands_seq
    \tl_set:NV \l_chubakueno_total_tl \l_chubakueno_sum_int
   }
   {% else add the interline space
    \seq_map_inline:Nn \l_chubakueno_summands_seq
     {
      \seq_set_split:Nnn \l__chubakueno_temp_seq { } { ##1 }
      % insert the interdigits space
      \__chubakueno_insert_space:N \l__chubakueno_temp_tl
      \seq_put_right:NV \l_chubakueno_output_summands_seq \l__chubakueno_temp_tl
     }
    \seq_set_split:NnV \l__chubakueno_temp_seq { } \l_chubakueno_sum_int
    \__chubakueno_insert_space:N \l_chubakueno_total_tl
   }
  \begin{tabular} [\l_chubakueno_align_tl] { >{$}r<{$} @{$\;$} >{$}r<{$} }
  & \seq_use:Nnnn \l_chubakueno_output_summands_seq { \\ + & } { \\ & } { \\ + & }
  \\
  \midrule
  & \tl_use:N \l_chubakueno_total_tl
  \end{tabular}
 }

\cs_new_protected:Npn \__chubakueno_insert_space:N #1
 {
  \tl_set:Nx #1
   {
    \seq_use:Nn \l__chubakueno_temp_seq { \skip_horizontal:n { \l_chubakueno_spacing_dim } }
   }
 }

\ExplSyntaxOff

\begin{document}

Just the sum: \computesum*{345+6543+345}

The unspaced sum: \computesum{345+6543+345}

Spaced sum: \computesum[spacing=.1em,align=b]{640+231+100+91+1003}

Top aligned: \computesum[align=t,spacing=.2em]{333 + 333 + 333 + 2}

\end{document}

첫 번째 작업은 합계를 계산하여 정수 변수에 저장하는 것입니다. 피합수는 나중에 처리할 수 있도록 순서대로 저장됩니다. just가 \computesum*호출되면 합계만 인쇄됩니다.

일반 호출에서는 몇 가지 가능한 옵션이 평가됩니다. spacing은 숫자 간 공백용(기본값 0), 테이블 형식의 전체 정렬용, (기본값) 또는 align입니다 . 필수 인수 주변의 공백은 무시됩니다.ctb+

그런 다음 테이블은 tabular. 표의 마지막 행도 마찬가지로 전체에서 구성됩니다.

여기에 이미지 설명을 입력하세요

관련 정보