나는 사용하고있다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
. csvsimple
stock 명령의 기능 을 모방하여 다른 명령을 생성할 수 있습니다 .
\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의 솔루션:
- 많은 테이블에 사용하려는 경우 더 많은 전체 코드