代码

代码

请考虑以下屏幕截图。

在此处输入图片描述

我想要的功能是:

  • 我可以缩小页面尺寸并且允许表格跨页。
  • 奇数行的背景必须与偶数行的背景不同,以便于阅读。
  • 这些值必须自动计算,而不是手动输入数据。

平均能量损失

\documentclass[preview,border=12pt,varwidth]{standalone}
\usepackage[nomessages]{fp}
\usepackage[table]{xcolor}
\usepackage{longtable}
\usepackage{pgffor}
\begin{document}
\topskip=0pt
\begin{longtable}{*2{|>{$\displaystyle}c<{$}}|}\hline
\theta & \sin \theta\\
\foreach \x in {0,10,...,360}{\x & \FPeval\temp{round(\x:3)}\temp\\}
\end{longtable}
\end{document}

答案1

更简单的是,您可以使用计算器包,它允许您计算三角函数。此外超表格式包将允许您在每个表格上制作重复的标题/页脚。

这是一个更简单的例子:

代码

\documentclass{article}
\usepackage[nomessages]{fp}
\usepackage[table]{xcolor}
\usepackage{calculator}
\usepackage{forloop}
\usepackage{supertabular}
\usepackage{longtable}
\usepackage{fullpage}

\begin{document}

\newcounter{theangle}

\tablefirsthead{
    \cline{2-4}
    \rowcolor{white}
    \multicolumn{1}{c|}{ } &
    \cos \theta & \sin \theta & \tan \theta &
    \multicolumn{1}{c}{ } \\
    \hline
      }
\tablehead{
    \rowcolor{white}
    \multicolumn{5}{c}{Table continued \ldots}\\
    \cline{2-4}
    \rowcolor{white}
    \multicolumn{1}{c|}{ } &
    \cos \theta & \sin \theta & \tan \theta &
    \multicolumn{1}{c}{ } \\
    \hline
      }
\tablelasttail{
    \rowcolor{white}
    \multicolumn{1}{c|}{ } &
    \cos \theta & \sin \theta & \tan \theta &
    \multicolumn{1}{c}{ }\\
    \cline{2-4}
      }
\tabletail{
    \hline
    \rowcolor{white}
    \multicolumn{1}{c|}{ } &
    \cos \theta & \sin \theta & \tan \theta &
    \multicolumn{1}{c}{  } \\
    \cline{2-4}
    \rowcolor{white}
    \multicolumn{5}{c}{Continued on next page \ldots}\\
      }

\rowcolors{2}{gray!50}{white}
\begin{center}
\begin{supertabular}{*5{|>{$}c<{$}}|}
\forloop{theangle}{0}{\value{theangle} < 360}{
    \arabic{theangle}^\circ &
    \DEGREESCOS{\value{theangle}}{\solx} \solx &
    \DEGREESSIN{\value{theangle}}{\solx} \solx &
    \DEGREESTAN{\value{theangle}}{\solx} \solx &
    \arabic{theangle}^\circ\\
    \addtocounter{theangle}{4} 
      }
\end{supertabular}

\end{center}
\end{document}

输出 表开始 表底 表格续

答案2

套餐

  • xcolortable可以选择\rowcolor
  • pgfplotstable(以及内部pgfmath)用于构建整个表格。该pgfmath包帮助我们创建三角函数值(它们都是内置的)
  • longtable允许在一个表中分页(需要多次传递)
  • siunitx在表格中排版数字(pgfmath在数字打印方面已经做得很好了,但不太适合表格)
  • booktabs制定良好的规则。

\pgfplotstableset

辅助样式

以 开头的样式@是我创建的新样式。既不需要@(只是为了将pgfplotstable的样式与我的样式区分开),名称也不是一成不变的。这些样式与.list处理程序一起使用,以简化列的创建。

线路

@create function/.list={sin,cos,tan,cot,cosec,sec},

构建主列,请注意csc函数在 PGF 中命名cosec。列已命名,cosec但我后来将 更改为column namecsc(可能还要注意,应该使用正确的列名,例如 和 ,$\phi$$\sin \phi$不是空列名和非数学模式但数学函数名称。)

注意string type,这将停用 PGF 打印数字功能(但不会停用列的 PGF 数学计算)。

longtable设置

基本键begin tableend table用于设置从tabular到的内部表环境longtable

every head row样式被(误)用于设置特殊行(这些是longtable功能)。longtable有关详细信息,请参阅手册。

\pgfplotstablenew

让我们创建 91 行(+标题(例如longtable序言)):

\pgfplotstablenew[
    columns={left,sin,cos,tan,cot,sec,cosec,right},
    ]{91}\myTable

\sisetup

在实际排版之前,需要进行某些siunitx设置(也可以在列规范中完成S[…])。这些设置是必需的,这样siunitx就不会尝试以科学计数法设置数字,因为 PGF 数学可能会以(几乎在任何地方)的形式给出输出1.746e-2

\pgfplotstabletypeset

最后!

column type这里使用了设置 s 的辅助样式。

使用@secure header\multicolumn来隐藏内容,避免siunitx解析。通常的做法是将内容放在括号中,例如,{sin}在这里似乎不起作用。

left和列right仅使用通过语法附加的r列(我们S也可以在这里使用)。这也是标题需要空条目的原因。\si{\degree}array<{…}\multicolumn{1}{c}{}

代码

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\usepackage{longtable}
\usepackage{siunitx}
\usepackage{booktabs}
\pgfplotstableset{
    % helpers
    @create function/.style={
        create on use/#1/.style={
            create col/expr=#1(\thisrow{left})}},
    @secure header/.style={
        columns/#1/.append style={
            column name=\multicolumn{1}{c}{#1}}},
    @set columns to siunitx type 1/.style={
        columns/#1/.append style={
            string type,
            column type={S[table-format=1.4]}}},
    @set columns to siunitx type 2/.style={
        columns/#1/.append style={
            string type,
            string replace={inf}{\multicolumn{1}{c}{$\infty$}},
            column type={S[table-format=2.4]}}},
    @set columns to siunitx type 3/.style={
        columns/#1/.append style={
            string type,
            string replace={inf}{\multicolumn{1}{c}{$\infty$}},
            column type={S[table-format=2.3]}}},
    @set columns to basic style/.style={
        columns/#1/.append style={
            column type={r<{\si{\degree}}}}},
    @set empty header/.style={
        columns/#1/.append style={
            column name={\multicolumn{1}{c}{}}}},
    %
    % the left and right columns
    create on use/left/.style={
        create col/expr=\pgfplotstablerow},
    create on use/right/.style={
        create col/expr={90-\thisrow{left}}},
    %
    % Let's start: the functions
    @create function/.list={sin,cos,tan,cot,cosec,sec},
    % The longtable setup
    begin table=\begin{longtable},
    end table=\end{longtable},
    every head row/.append style={
        before row=\toprule,
        after row=%
        \midrule \endhead
        \midrule
        \multicolumn{1}{c}{} & {cos} & {sin} & {cot} & {tan} & {csc} & {sec} & \multicolumn{1}{r}{\dots}\\ \bottomrule
        \endfoot
        \midrule
        \multicolumn{1}{c}{} & {cos} & {sin} & {cot} & {tan} & {csc} & {sec} & \multicolumn{1}{r}{} \\ \bottomrule
        \endlastfoot},
    every odd row/.style={before row={\rowcolor[gray]{.9}}},
}
\pgfplotstablenew[
    columns={left,sin,cos,tan,cot,sec,cosec,right},
    ]{91}\myTable
\begin{document}
\sisetup{scientific-notation = fixed, fixed-exponent = 0, table-auto-round=true}
\pgfplotstabletypeset[
    % the column types
    @set columns to siunitx type 1/.list={sin,cos},
    @set columns to siunitx type 2=tan,
    @set columns to siunitx type 3/.list={cot,sec,cosec},
    @set columns to basic style/.list={left,right},
    % setup for the headers
    @secure header/.list={sin,cos,tan,cot,sec},
    @set empty header/.list={left,right},
    columns/cosec/.append style={column name={\multicolumn{1}{c}{csc}}},
]\myTable
\end{document}

输出

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容