我是一名数学老师,想制作一份生成乘法表的 LaTeX 文档。我希望输出如下
1x5=5
2x5=10
ETC。
有人可以帮我吗?
答案1
我能想到两个解决方案:
- 使用
pgf
's\foreach
和\pgfmathparse
- 使用 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
它的灵活性和可读性稍差,但不需要额外的包。这里有两个要素:使用\@for
for 循环(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}