解决方案使用pgf

解决方案使用pgf

我是一名数学老师,想制作一份生成乘法表的 LaTeX 文档。我希望输出如下

1x5=5

2x5=10

ETC。

有人可以帮我吗?

答案1

我能想到两个解决方案:

  1. 使用pgf's\foreach\pgfmathparse
  2. 使用 LaTeX\@for和计数器进行算术运算

解决方案使用pgf

使用较新的版本,pgf您可以编写:

\documentclass{article}

\usepackage{pgffor}
\usepackage{pgfmath}

\begin{document}

    \foreach \b in {1,...,5}{%
        \noindent%
        \foreach \a in {1,2,...,10}{%
            \pgfmathparse{int(\a*\b)}%
             $\a \times \b = {\pgfmathresult}$ \\
        }
        \newpage
    }    

\end{document}

它很容易适应不同的风格或功能,并且可读性很高。两个foreach循环遍历花括号中的列表,内层循环是实际生成表格的循环,外层循环生成五个表格。

\pgfmathparse存储\pgfmathresult表达式的求值结果。在宏求值{int(\a*\b)}之后,和分别设置为保存第一个操作数、第二个操作数和乘法结果。\pgfmathparse\a\b\pgfmathresult

为了使实现可重复使用,您可以将其打包到一个新的宏中:

\newcommand{\MultTableOf}[1]{
    \foreach \a in {1,2,...,10}{%
        \pgfmathparse{int(\a*\b)}%
        $\a \times \b = {\pgfmathresult}$ \\
    }
}

然后使用\MultTableOf{3}例如来调用它。

使用纯 LaTeX 的解决方案

如果您觉得使用pgf有点过度(它具有令人难以置信的多的高级功能)或者它未安装在您的系统中,您可以考虑使用纯 TeX 解决方案,如下所示:

\makeatletter
\def\MultTables{1,2,3,4,5}
\def\MultFactors{1,2,3,4,5,6,7,8,9,10}
\newcount\r
\@for\a:=\MultTables\do{
    \@for\b:=\MultFactors\do{
        \r=\a
        \multiply\r by \b
        $\a \times \b = \number\r $ \\
    }
}
\makeatother

它的灵活性和可读性稍差,但不需要额外的包。这里有两个要素:使用\@forfor 循环(pgf 的更原始版本foreach)和使用计数器执行简单的算术运算。

答案2

这个解决方案的优点是它对数字进行右对齐,从而产生良好的对齐。

\documentclass{article}
\usepackage{ifthen}
\newcounter{index}
\newcounter{product}
\usepackage{calc}
\newcount\maxtotal
\newcommand\multt[2]{%
  \maxtotal=#1%
  \multiply\maxtotal by #2%
  \setcounter{index}{0}%
  \setcounter{product}{0}%
  \whiledo{\theindex<#2}{%
    \stepcounter{index}%
    \addtocounter{product}{#1}%
    \noindent\( \makebox[\widthof{#2}][r]{\theindex}\times #1 =%
      \makebox[\widthof{\the\maxtotal}][r]{\theproduct} \)\\
  }%
}
\parskip 1EM
\begin{document}
\multt{5}{13}\par
\multt{9}{12}
\end{document}

在此处输入图片描述

相关内容