я используюcsvsimpleдля изготовления столов иcsvautotabularиcsvautobooktabularотлично работают. Однако, я хотел бы, чтобы содержаниекаждый столбецбыть выровнен по центру, а не по левому краю.
Ответ с использованиемcsvautotabularи/илиcsvautobooktabularБыло бы предпочтительнее просто добавить опцию, если это возможно.
Я попробовал это сделать, но возникла ошибка.
\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.
Я хочу получить указанный вывод, но с содержимым каждого столбца, отцентрированным.
Примечание
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:
- Более общий код, если вы собираетесь использовать его для многих таблиц