Code

Code

Betrachten Sie den folgenden Screenshot.

Bildbeschreibung hier eingeben

Die Funktionen, die ich haben möchte, sind:

  • Ich kann die Seitengröße verkleinern und die Tabelle kann über mehrere Seiten verteilt werden.
  • Der Hintergrund der ungeraden Zeilen muss sich von dem der geraden Zeilen unterscheiden, um das Lesen zu erleichtern.
  • Die Werte müssen automatisch berechnet werden und dürfen nicht durch manuelle Dateneingabe erfolgen.

MWE

\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}

Antwort1

Noch einfacher geht es mit demTaschenrechnerPaket, mit dem Sie die trigonometrischen Funktionen auswerten können. Auch diesupertabelleMit dem Paket können Sie in jeder Tabelle wiederholte Kopf-/Fußzeilen erstellen.

Hier ist ein einfacheres Beispiel:

Code

\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}

Ausgabe Tabellenstart Tischunterseite Tabelle Fortsetzung

Antwort2

Pakete

  • xcolormit der Option tablefür\rowcolor
  • pgfplotstable(und intern pgfmath), das zum Erstellen der gesamten Tabelle verwendet wird. Das pgfmathPaket hilft uns beim Erstellen der trigonometrischen Werte (die alle eingebaut sind).
  • longtableum Seitenumbrüche in einer Tabelle zuzulassen (erfordert mehrere Durchläufe)
  • siunitxzum Setzen von Zahlen in Tabellen ( pgfmathfunktioniert bereits gut beim Zahlendruck, ist aber für Tabellen nicht besonders gut geeignet)
  • booktabsfür nette Regeln.

\pgfplotstableset

Hilfsstile

Stile, denen ein vorangestellt ist, @sind neue, von mir erstellte Stile. Weder ist das @erforderlich (nur um pgfplotstabledie Stile von von meinen zu unterscheiden), noch sind die Namen in Stein gemeißelt. Diese Stile werden mit dem .listHandler verwendet, um die Erstellung der Spalten zu erleichtern.

Die Linie

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

erstellt die Hauptspalten. Beachten Sie, dass die cscFunktion cosecin PGF benannt ist. Die Spalte ist benannt, cosecaber ich ändere das später column namein csc. (Man kann auch beachten, dass man richtige Spaltennamen verwenden sollte, z. B. $\phi$und $\sin \phi$anstelle von leeren Spaltennamen und Namen von mathematischen Funktionen, die nicht im mathematischen Modus sind.)

Beachten Sie den string typeSchlüssel, dieser deaktiviert die PGF-Drucknummernfunktionen (aber nicht die PGF-mathematische Berechnung der Spalten).

longtableaufstellen

Mit den Basisschlüsseln begin tableund wird die interne Tabellenumgebung von auf end tableeingestellt .tabularlongtable

Der every head rowStil wird (falsch) verwendet, um die speziellen Zeilen einzurichten (dies sind longtableFeatures). longtableWeitere Informationen finden Sie im Handbuch.

\pgfplotstablenew

Erstellen wir 91 Zeilen (+ Kopfzeile (z. B. longtablePräambel)):

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

\sisetup

Bestimmte Einstellungen werden vor dem eigentlichen Satz vorgenommen (dies hätte auch in den Spaltenspezifikationen siunitxerfolgen können ). Diese Einstellungen sind erforderlich, damit nicht versucht wird, Zahlen in wissenschaftlicher Notation einzurichten, da die PGF-Mathematik (so ziemlich überall) eine Ausgabe in der Form liefern könnte .S[…]siunitx1.746e-2

\pgfplotstabletypeset

Endlich!

Hierbei kommen die Hilfsstile zum Aufbau der column types zum Einsatz.

Das @secure headerverwendet das \multicolumnMakro, um den Inhalt vor siunitxder Analyse zu verbergen. Der übliche Ansatz, den Inhalt beispielsweise in Klammern zu setzen, {sin}scheint hier nicht zu funktionieren.

Die leftund die rightSpalte verwenden nur rSpalten (die wir hier auch verwenden könnten S), an die eine \si{\degree}via array-Syntax angehängt ist <{…}. Dies ist auch der Grund, warum der Header einen leeren \multicolumn{1}{c}{}Eintrag benötigt.

Code

\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}

Ausgabe

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

verwandte Informationen