![Code](https://rvso.com/image/266415/Code.png)
Betrachten Sie den folgenden Screenshot.
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
Antwort2
Pakete
xcolor
mit der Optiontable
für\rowcolor
pgfplotstable
(und internpgfmath
), das zum Erstellen der gesamten Tabelle verwendet wird. Daspgfmath
Paket hilft uns beim Erstellen der trigonometrischen Werte (die alle eingebaut sind).longtable
um Seitenumbrüche in einer Tabelle zuzulassen (erfordert mehrere Durchläufe)siunitx
zum Setzen von Zahlen in Tabellen (pgfmath
funktioniert bereits gut beim Zahlendruck, ist aber für Tabellen nicht besonders gut geeignet)booktabs
für nette Regeln.
\pgfplotstableset
Hilfsstile
Stile, denen ein vorangestellt ist, @
sind neue, von mir erstellte Stile. Weder ist das @
erforderlich (nur um pgfplotstable
die Stile von von meinen zu unterscheiden), noch sind die Namen in Stein gemeißelt. Diese Stile werden mit dem .list
Handler 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 csc
Funktion cosec
in PGF benannt ist. Die Spalte ist benannt, cosec
aber ich ändere das später column name
in 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 type
Schlüssel, dieser deaktiviert die PGF-Drucknummernfunktionen (aber nicht die PGF-mathematische Berechnung der Spalten).
longtable
aufstellen
Mit den Basisschlüsseln begin table
und wird die interne Tabellenumgebung von auf end table
eingestellt .tabular
longtable
Der every head row
Stil wird (falsch) verwendet, um die speziellen Zeilen einzurichten (dies sind longtable
Features). longtable
Weitere Informationen finden Sie im Handbuch.
\pgfplotstablenew
Erstellen wir 91 Zeilen (+ Kopfzeile (z. B. longtable
Prä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 siunitx
erfolgen 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[…]
siunitx
1.746e-2
\pgfplotstabletypeset
Endlich!
Hierbei kommen die Hilfsstile zum Aufbau der column type
s zum Einsatz.
Das @secure header
verwendet das \multicolumn
Makro, um den Inhalt vor siunitx
der Analyse zu verbergen. Der übliche Ansatz, den Inhalt beispielsweise in Klammern zu setzen, {sin}
scheint hier nicht zu funktionieren.
Die left
und die right
Spalte verwenden nur r
Spalten (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}