使用公式生成表格

使用公式生成表格

使用公式生成表格的最简单、最通用的方法是什么?最强大的最少代码量。我只想生成一个值表,其中的值由数学公式生成。我不想花比手工编写表格更多的时间来编写表格,否则就毫无意义了。

答案1

这是nicematrix使用浮点数expl3(符合 IEEE754)进行数学计算的一种方法。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\ExplSyntaxOn
\NewDocumentCommand { \MyFunction } { m m }
  { \myfunction:nn { \int_use:c { c@#1 } } { \int_use:c { c@#2 } } }

\cs_new_protected:Nn \myfunction:nn
  { 
    \fp_eval:n 
      { 
        trunc(    
         sqrt(#1*7)*(2+#2) % <---- function here
         , 3) 
      } 
  }

\ExplSyntaxOff

$\pAutoNiceMatrix[code-before = \cellcolor{red!15}{3-3}]{6-6}{\MyFunction{iRow}{jCol}}$

\end{document}

上述代码的输出

答案2

有几种可能性,这里有一个简单的循环,显示设置平方和表和乘法表

在此处输入图片描述

\documentclass{article}

\newcount\zi
\newcount\zj

\newcommand\zz[1]{%
\makebox[1.2cm][r]{$\the\numexpr#1\relax$}%
\ifnum\zj=9 
  \zj=0
  \advance\zi 1
  \par
\else
  \advance\zj 1
\fi
\ifnum\zi<10 \afterfi\zz{#1}\fi}

\def\afterfi#1\fi{\fi#1}

\begin{document}

\begin{center}
 \zz{\zi*\zi+\zj*\zj}
\end{center}

\begin{center}
 \zz{\zi*\zj}
\end{center}
\end{document}

答案3

这是 lualatex 贡献的 MWE。

三

% !TeX TS-program = lualatex    
\documentclass{article}     
\usepackage{luacode} 

\begin{luacode*}
    function trigtable ()
    for t=0, 45, 3 do
      local x=math.rad(t)
      sf =[[%2d$^{\circ}$ & %1.9f & %1.9f & %1.9f & %1.9f \\]]
      tex.print(string.format(sf, t, x, math.sin(x), math.cos(x),   math.tan(x)))
    end
    end
\end{luacode*}  

\begin{document}    

\newcommand{\trigtable}{\luadirect{trigtable()}}    

\begin{tabular}{rcccc}
    \hline
    & $x$ & $\sin(x)$ & $\cos(x)$ & $\tan(x)$ \\
    \hline
    \trigtable
    \hline 
\end{tabular}

\end{document}

PracTEX 期刊,2013 年,第 1 期 使用 LuaLATEX 的数值方法、Juan I. Montijano、Mario Pérez、Luis Rández 和 Juan Luis Varona


使用 Lua 作为编程语言和 LuaLaTeX,您可以从格式中划分计算表格内容的任务。

例如,要从前面显示的相当粗糙的表格到要发布的最终表格,需要

  1. 更大的标题、拉伸的单元格、交替的行颜色(最好在 LaTeX 中完成)

  1. 从 0 度到 120 度,每 5 度为一个步长,小数点后 4 位四舍五入(不截断!),并处理 tan(90 度)(最好在 Lua 中完成)

Lua 部分的改动很小。

nicematrix对于 LaTeX 格式化,我使用了允许使用指令进行格式化的包,而无需触及表格单元格和最少的编码。

x2

% !TeX TS-program = lualatex    
\documentclass{article} 

\usepackage{nicematrix} 
\usepackage{luacode} 

\begin{luacode*}
 function trigtable()
    local t
    for t = 0, 120, 5 do
        local x=math.rad(t)
        if t == 90 then
            sf =[[%2d$^{\circ}$ & %1.4f & %1.4f & %1.4f & \infty \\]]
        else
            sf =[[%2d$^{\circ}$ & %1.4f & %1.4f & %1.4f & %1.4f \\]]
        end
        tex.print(string.format(sf, t, x, math.sin(x), math.cos(x), math.tan(x)))
    end
 end
\end{luacode*}  

\begin{document}    

\newcommand{\trigtable}{\luadirect{trigtable()}}   

\begin{NiceTabular}{rcccc}[
    first-row,
    code-for-first-row = \Large,
    code-before = \rowcolors{1}{blue!3}{},
    cell-space-top-limit = 5pt,
    cell-space-bottom-limit = 5pt
        ]
    \hline
     & $x$ & $\sin(x)$ & $\cos(x)$ & $\tan(x)$ \\
    \hline
    \trigtable
    \hline 
\end{NiceTabular}

\end{document}

相关内容