Ich benutzecsvsimplefür die Herstellung von Tischen undcsvautotabularUndcsvautobooktabularfunktionieren super. Allerdings hätte ich gerne den Inhalt vonjede Spaltezentriert statt linksbündig auszurichten.
Eine Antwort mitcsvautotabularund/odercsvautobooktabularWenn möglich, wäre es besser, einfach eine Option hinzuzufügen.
Ich habe dies versucht, aber es gibt einen Fehler zurück.
\csvautotabular[tabular=c]{grade.csv}
\csvautobooktabular[tabular=c]{grade.csv}
Hier ist einMWE:
\documentclass[11pt,a4paper,oldfontcommands]{memoir}
\usepackage{csvsimple} % For csv importing.
% csv file from another question
\begin{filecontents*}{grade.csv}
name,givenname,matriculation,gender,grade
Maier,Hans,12345,m,1.0
Huber,Anna,23456,f,2.3
Weisbaeck,Werner,34567,m,5.0
\end{filecontents*}
\begin{document}
\csvautotabular{grade.csv}
\end{document}
Und die MWE-Ausgabe.
Ich möchte die besagte Ausgabe erhalten, aber mit dem Inhalt jeder Spalte zentriert.
Notiz
csvautotabularbereitete mir Probleme beim Anzeigen von Sonderzeichen, kann aber mit der Option „Alle respektieren“ gelöst werden.
z.B
\csvautotabular[respect all]{table.csv}
Oder mit dem benutzerdefinierten Befehl von @egreg.
\csvautotabularcenter[respect all]{table.csv}
Antwort1
Soweit ich das sehe, gibt es keine Möglichkeit, die Spaltenausrichtung in zu ändern \csvautotabular
. Sie können einen anderen Befehl generieren, indem Sie csvsimple
den Standardbefehl nachahmen:
\documentclass[11pt,a4paper]{memoir}
\usepackage{csvsimple} % For csv importing.
\makeatletter
\csvset{
autotabularcenter/.style={
file=#1,
after head=\csv@pretable\begin{tabular}{|*{\csv@columncount}{c|}}\csv@tablehead,
table head=\hline\csvlinetotablerow\\\hline,
late after line=\\,
table foot=\\\hline,
late after last line=\csv@tablefoot\end{tabular}\csv@posttable,
command=\csvlinetotablerow},
}
\makeatother
\newcommand{\csvautotabularcenter}[2][]{\csvloop{autotabularcenter={#2},#1}}
% csv file from another question
\begin{filecontents*}{\jobname.csv}
name,givenname,matriculation,gender,grade
Maier,Hans,12345,m,1.0
Huber,Anna,23456,f,2.3
Weisbaeck,Werner,34567,m,5.0
\end{filecontents*}
\begin{document}
\csvautotabularcenter{\jobname.csv}
\end{document}
Eine Version mit \csvautobooktabularcenter
:
\documentclass[11pt,a4paper,oldfontcommands]{memoir}
\usepackage{csvsimple} % For csv importing.
\makeatletter
\csvset{
autotabularcenter/.style={
file=#1,
after head=\csv@pretable\begin{tabular}{|*{\csv@columncount}{c|}}\csv@tablehead,
table head=\hline\csvlinetotablerow\\\hline,
late after line=\\,
table foot=\\\hline,
late after last line=\csv@tablefoot\end{tabular}\csv@posttable,
command=\csvlinetotablerow},
autobooktabularcenter/.style={
file=#1,
after head=\csv@pretable\begin{tabular}{*{\csv@columncount}{c}}\csv@tablehead,
table head=\toprule\csvlinetotablerow\\\midrule,
late after line=\\,
table foot=\\\bottomrule,
late after last line=\csv@tablefoot\end{tabular}\csv@posttable,
command=\csvlinetotablerow},
}
\makeatother
\newcommand{\csvautotabularcenter}[2][]{\csvloop{autotabularcenter={#2},#1}}
\newcommand{\csvautobooktabularcenter}[2][]{\csvloop{autobooktabularcenter={#2},#1}}
% csv file from another question
\begin{filecontents*}{\jobname.csv}
name,givenname,matriculation,gender,grade
Maier,Hans,12345,m,1.0
Huber,Anna,23456,f,2.3
Weisbaeck,Werner,34567,m,5.0
\end{filecontents*}
\begin{document}
\csvautotabularcenter{\jobname.csv}
\bigskip
\csvautobooktabularcenter{\jobname.csv}
\end{document}
Antwort2
ich fanddas Handbuchgrößtenteils fast unverständlich. Aber es wird mehrmals erwähnt, dass man es normalerweise nicht verwenden würde \csvautotabular
oder \csvautobooktabular
in der Praxis.
Sie empfehlen die Verwendung von \csvreader
. Hier ist ein minimaler Anwendungsfall von \csvreader
, der für andere Personen (wie auch für mich) vorzuziehen sein kann.
\csvreader[
tabular=|c|c|r|c|r|,
table head=\hline \bfseries{Name} & \bfseries{Given Name} & \bfseries{Matriculation} & \bfseries{Gender} & \bfseries{Grade} \\\hline,
late after last line=\\\hline % horizontal line at the end of the table
]{
grade.csv
}{}{\csvlinetotablerow}
Vorteile gegenüber der Lösung von egreg:
- Mehr Kontrolle über Tabellenüberschriften und Spaltenausrichtungen
- Weniger Gesamtcode für eine einzelne Tabelle
Nachteile gegenüber der Lösung von egreg:
- Mehr Gesamtcode, wenn Sie ihn für viele Tabellen verwenden möchten