私は使用していますcsvシンプルテーブルを作るため、そしてcsv自動表形式そしてcsvautobook表形式うまく機能しています。しかし、各列左揃えではなく中央揃えになります。
回答例csv自動表形式および/またはcsvautobook表形式可能であれば、単にオプションを追加することが望ましいです。
これを試してみましたが、エラーが返されます。
\csvautotabular[tabular=c]{grade.csv}
\csvautobooktabular[tabular=c]{grade.csv}
こちらはムウェ:
\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}
そしてMWE出力。
上記の出力を取得したいのですが、各列の内容を中央揃えにしたいです。
注記
csv自動表形式特殊文字を表示しようとすると問題が発生しましたが、「すべてを尊重」オプションを使用すると解決できます。
例えば
\csvautotabular[respect all]{table.csv}
または、@egreg のカスタム コマンドを使用します。
\csvautotabularcenter[respect all]{table.csv}
答え1
私の知る限り、 では列の配置を変更するための規定はありません。の標準コマンド\csvautotabular
を模倣することで、別のコマンドを生成できます。csvsimple
\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}
次のバージョン\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}
答え2
私は見つけたマニュアル大部分はほぼ理解不能です。しかし、通常は使用しない、\csvautotabular
または\csvautobooktabular
実際には使用しないであろうことが何度か言及されています。
彼らは を使用することを提案しています\csvreader
。 以下は の最小限の使用例です\csvreader
。これは他の人にとっては好ましいかもしれません (私にとってそうでした)。
\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}
egreg のソリューションの長所と短所:
- 表のヘッダーと列の配置をより細かく制御
- 単一のテーブルに対する全体的なコードが少なくなる
egreg のソリューションに対する短所:
- 多数のテーブルで使用する場合は、全体的なコードが多くなります