![动态填充 Latex 表](https://linux22.com/image/398821/%E5%8A%A8%E6%80%81%E5%A1%AB%E5%85%85%20Latex%20%E8%A1%A8.png)
我已经为函数表生成了一个练习问题,如下所示
\documentclass{article}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage{amsmath}
\lhead{Name:}
\chead{Function Table}
\rhead{Date:}
\lfoot{}
%\cfoot{\thepage}
\rfoot{}
\pagestyle{fancy}
\newcommand{\question}[7]{\noindent \textbf{Question #1:} $f(x)$ = #2
\\[\baselineskip]
\begin{tabular}{|c|c|c|c|c|c|}
\hline
$x$ & #3 & #4 & #5 & #6 & #7 \\
\hline
$f(x)$ & & & & & \\
\hline
\end{tabular} \\[\baselineskip]}
\begin{document}
\noindent
\question{1}{$x+1$}{-3}{-2}{0}{1}{2}
\end{document}
现在我想在下一页创建一个解决方案,但想f(x)
为每个问题自动填充缺失的值,可以吗?也许使用sagetex
?
答案1
这是使用包的方法sagetex
,发现这里。为了便于说明,我把所有输出放在一页上。在适当的位置添加 \newpage 将产生您要求的效果:
\documentclass{article}
\usepackage{sagetex}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage{amsmath}
\lhead{Name:}
\chead{Function Table}
\rhead{Date:}
\lfoot{}
%\cfoot{\thepage}
\rfoot{}
\pagestyle{fancy}
\begin{document}
\begin{sagesilent}
def Qtable(n,f,v1,v2,v3,v4,v5):
f(x) = f
output = r""
output += r"\noindent\textbf{Question $%s$}\\\\"%(n)
output += r"\begin{tabular}{|c|c|c|c|c|c|}"
output += r"\hline"
output += r"$x$ & $%s$ & $%s$ & $%s$ & $%s$ & $%s$\\"%(v1,v2,v3,v4,v5)
output += r"\hline"
output += r"$f(x)=%s$ & & & & & \\"%(f(x))
output += r"\hline"
output += r"\end{tabular}"
return output
def Atable(n,f,v1,v2,v3,v4,v5):
f(x) = f
output = r""
output += r"\textbf{Question $%s$ solution}\\\\"%(n)
output += r"\begin{tabular}{|c|c|c|c|c|c|}"
output += r"\hline"
output += r"$x$ & $%s$ & $%s$ & $%s$ & $%s$ & $%s$\\"%(v1,v2,v3,v4,v5)
output += r"\hline"
output += r"$f(x)=%s$ & $%s$ & $%s$ & $%s$ & $%s$ & $%s$\\"%(f(x),f(v1),f(v2),f(v3),f(v4),f(v5))
output += r"\hline"
output += r"\end{tabular}"
return output
\end{sagesilent}
\begin{sagesilent}
Q1 = Qtable(1,x+1,-3,-2,0,1,2)
Q1A = Atable(1,x+1,-3,-2,0,1,2)
\end{sagesilent}
\sagestr{Q1}\\\\
\sagestr{Q1A}\\\\
\begin{sagesilent}
Q2 = Qtable(2,x^2-2*x+1,-4,-1,0,3,12)
Q2A = Atable(2,x^2-2*x+1,-4,-1,0,3,12)
\end{sagesilent}
\sagestr{Q2}\\\\
\sagestr{Q2A}
\end{document}
请记住,sagetex
是 LaTeX 发行版的一部分,但它依赖于计算机代数系统 SAGE,而 SAGE 不是。您需要在计算机上本地安装 SAGE,也可以使用免费的 Cocalc 通过互联网访问 SAGE。编译使用sagetex
是一个 3 步骤的过程:首先运行 LaTeX,然后运行 SAGE,然后再次运行 LaTeX。可以想象,第一次运行 LaTeX 将为 SAGE 结果创建一个空白框,然后 SAGE 计算结果,最后一次运行 LaTeX 会填写该框。如果 LaTeX 编译中需要 SAGE 计算,则程序将不会运行。为了巧妙解决这些问题,SAGE 创建了 LaTeX 代码。Python 函数 Qtable(用于问题表)将为空白表创建 LaTeX 代码,而 Atable(用于答案表)将创建正确填写的表格。第三次运行该过程,运行 LaTeX,现在正在编译一个更长的文档,因为它包含 SAGE 创建的 LaTeX 代码。
开始使用 SAGE 的最简单方法sagetex
是注册一个免费的可钙帐户