가운데 열의 내용이 포함된 Csvsimple \csvautotabular 및 \csvautobooktabular

가운데 열의 내용이 포함된 Csvsimple \csvautotabular 및 \csvautobooktabular

나는 사용하고있다csv단순테이블을 만들기 위한 것과csvautotabular그리고csvautobook테이블 형식잘 일하고 있어요. 그러나 나는 다음의 내용을 원한다.각 열왼쪽에 정렬되지 않고 중앙에 정렬됩니다.

다음을 사용한 답변csvautotabular및/또는csvautobook테이블 형식가능하다면 단순히 옵션을 추가하는 것이 좋습니다.

이것을 시도했지만 오류가 반환됩니다.

\csvautotabular[tabular=c]{grade.csv}

\csvautobooktabular[tabular=c]{grade.csv}

여기MWE:

\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 출력.

여기에 이미지 설명을 입력하세요

해당 출력을 얻고 싶지만 각 열의 내용이 중앙에 있습니다.


메모

csvautotabular특수 문자를 표시하는 데 문제가 있었지만 '모두 존중' 옵션을 사용하면 해결할 수 있습니다.

예를 들어

\csvautotabular[respect all]{table.csv}

또는 @egreg의 사용자 정의 명령을 사용합니다.

\csvautotabularcenter[respect all]{table.csv}

답변1

내가 아는 한, 열 정렬을 변경할 수 있는 조항은 없습니다 \csvautotabular. csvsimplestock 명령의 기능 을 모방하여 다른 명령을 생성할 수 있습니다 .

\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의 솔루션:

  • 많은 테이블에 사용하려는 경우 더 많은 전체 코드

관련 정보