我知道我可以使用spreadtab
在表格中进行自动计算。但是,我只能进行简单的操作,例如,+-*/
但我不知道如何进行更复杂的操作,例如log
,,,,,。ln
sin
cos
tan
exp
我尝试插入一些fp
中的函数spreadtab
,但只接收错误。
这是一个简单的例子:
\documentclass{standalone}
\usepackage{spreadtab}
\usepackage{fp}
\begin{document}
\begin{spreadtab}{{tabular}{cc}}
@number & @$\ln$(number)\\
10 & \FPln{\result}{a2} \result
\end{spreadtab}
\end{document}
它给出了错误:Missing = inserted for \ifnum. \end{spreadtab}
。
答案1
看来您可以直接使用ln
和函数:sin
代码:
\documentclass{article}
\usepackage{booktabs}
\usepackage{spreadtab}
\usepackage{fp}
\usepackage{numprint}
\npdecimalsign{.}
\renewcommand\STprintnum[1]{\numprint{#1}}
\begin{document}
\begin{spreadtab}{{tabular}{ccc}}\toprule
@$x$ & @$\ln(x)$ & @$\sin(x)$ [$x$ in degrees] \\
\cmidrule(lr){1-1}
\cmidrule(lr){2-2}
\cmidrule(lr){3-3}
15 & ln(a2) & sin(a2*pi/180) \\
30 & ln(a3) & sin(a3*pi/180) \\
45 & ln(a4) & sin(a4*pi/180) \\
90 & ln(a5) & sin(a5*pi/180) \\
\bottomrule
\end{spreadtab}
\end{document}
答案2
使用强大的解决方案xfp
包裹:
\documentclass{article}
\def\Precision{4} % calculation precision
\usepackage{multido}
\usepackage{booktabs}
\usepackage[
round-mode = places,
round-precision = \Precision,
group-digits = false
]{siunitx}
\usepackage{xfp}
\DeclareSIUnit[mode = text]\radian{rad}
\begin{document}
% http://tex.stackexchange.com/a/201554/15874
\makeatletter
\newcommand*\skyIDtable{}
\multido{\i = 1+1}{10}{\protected@xdef\skyIDtable{\skyIDtable
\i
& \fpeval{round(ln(\i),\Precision)} % logarithmic
& \fpeval{round(sin(\i),\Precision)} % sine (radian)
& \fpeval{round(sind(\i),\Precision)} % sine (degrees)
& \fpeval{round(tan(\i),\Precision)} % tangent (radian)
& \fpeval{round(tand(\i),\Precision)} % tangent (degrees)
& \fpeval{round(exp(\i),\Precision)} % exponential
\\}}
\makeatother
\begin{table}
\begin{tabular}{
S[table-format = 2]
S[table-format = 1.\Precision]
S[table-format = -1.\Precision]
S[table-format = 1.\Precision]
S[table-format = -1.\Precision]
S[table-format = 1.\Precision]
S[table-format = 5.\Precision]
}
\toprule
{$x$} & {$\ln x$} & {$\sin x$} & {$\sin x$} & {$\tan x$} & {$\tan x$} & {$\exp x$} \\
{---} & {---} & {\si{\radian}} & {\si{\degree}} & {\si{\radian}} & {\si{\degree}} & {---} \\
\midrule
\skyIDtable
\bottomrule
\end{tabular}
\end{table}
\end{document}
更新
请注意,log_[b](即以 b 为底的对数)尚未实现。
答案3
LaTeX 是为排版而设计的。如果你也要用它来进行数学计算,那么你应该考虑sagetex
包裹. 它利用了计算机代数系统的力量智者允许您计算和绘制并将它们放置在您想要的任何位置。对于表格,您可以让 Sage 为您排版(如下例所示),这样可以节省大量时间并消除错误。该sagetex
软件包要求您能够访问 Sage。您可以通过免费萨基马云帐户,或者您可以在计算机上本地安装 Sage。
\documentclass[12pt]{article}
\usepackage{sagetex}
\usepackage[margin=.5in]{geometry}
\begin{document}
\pagestyle{empty}
\begin{sagesilent}
var('x')
f(x) = sin(x*pi/180.)
g(x) = cos(x*pi/180.)
h(x) = tan(x*pi/180.)
m(x) = tan(x)
output = ""
output += r"\begin{tabular}{ccccccccc} "
output += r" degrees & sine & cosine & tangent & & degrees & sine & cosine & tangent \\ \hline "
for i in range(1, 5):
output += r"%d & %8.4f & %8.4f & %8.4f & & %d & %8.4f & % 8.4f & %12.4f \\ "%(i, f(i), g(i), h(i), i+45, f(i+45), g(i+45), h(i+45))
output += r"\end{tabular}"
\end{sagesilent}
\begin{center}
\sagestr{output}
\end{center}
You can do the traditional table entering data cell by cell:\\
\begin{tabular}{c|c|c}
$\sage{f(45).n(digits=5)}$ & $\sage{cos(pi/3).n(digits=4)}$ & $\sage{log(8,2).n(digits=4)}$\\
\hline
$\sage{ln(7).n(digits=4)}$ & $\sage{m(pi/3).n(digits=4)}$ & $\sage{exp(2).n(digits=5)}$\\
\end{tabular}
Or you can do calculations inline:
What's the value of $e^{5}$? It's $\sage{(e^5)}$. That's not helpful.
What is it as a decimal? It's $\sage{(e^5).n(digits=8)}$.
What's $\log_2(8)$? It's $\sage{log(8,2)}$.
\end{document}
以下是在Sagemath Cloud中运行的代码的屏幕截图:
请注意,以 for i in range(1, 5): 开头的 for 循环会生成 4 行表格,因为 i 必须小于最后一个数字。您可以将 5 更改为更大的数字,然后让 Sage 为您创建表格。