Csvsimple \csvautotabular と \csvautobooktabular の中央揃えの列の内容

Csvsimple \csvautotabular と \csvautobooktabular の中央揃えの列の内容

私は使用しています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 のソリューションに対する短所:

  • 多数のテーブルで使用する場合は、全体的なコードが多くなります

関連情報