我想创建一个命令来创建表格。从最基本的设想来看,“autotabell”函数应该是这样的:
\documentclass{article}
\usepackage{tikz}
\usepackage{csvsimple}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xspace}
\usepackage{xstring}
\begin{filecontents*}{grad.csv}
name,givenname,matriculation,gender,grade
Maier,Hans,12345,m,1.0
Huber,Anna,23456,f,2.3
Weissback,Werner,34567,m,5.0
Bauer,Maria,19202,f,3.3
\end{filecontents*}
\def\ReplaceStr#1{%
\IfSubStr{#1}{XY}{%
\StrSubstitute{#1}{XY}{\textbackslash}}{#1}}
\newcommand{\spaltenZ}[1]{%
\gdef\spaltenZresult{1=XY1} %
\foreach \x in {2,...,#1}%
{%
\global\edef\spaltenZresult{\spaltenZresult, \x=XY\x}%
}%
\gdef\spaltenZresultt{\ReplaceStr{\spaltenZresult}}
}
\newcommand{\spaltenL}[1]{%
\gdef\spaltenLresult{|} %
\foreach \x in {1,...,#1}%
{%
\global\edef\spaltenLresult{|l \spaltenLresult}%
}%
}
\newcommand{\autotabell}[2]{
\spaltenL{#1}
%\spaltenZ{#2}
\begin{table}[htb]
\centering
\csvreader[tabular=\spaltenLresult]{grad.csv}{1=\1, 2=\2, 3=\3, 4=\4, 5=\5}{\1 & \2 & \3 & \4 & \5}
\end{table}
}
\begin{document}
\autotabell{5}{5}
\spaltenZ{5} %just to test it
\spaltenZresultt %just to test it
\end{document}
如您所见,变量“spaltenZresultt”给出“1 = \1, 2 = \2,3 = \3,4 = \4,5 = \5”但如果我将这个变量添加到新命令中而不是“1 = \1, 2 = \2,3 = \3,4 = \4,5 = \5”
\newcommand{\autotabell}[2]{
\spaltenL{#1}
\spaltenZ{#2}
\begin{table}[htb]
\centering
\csvreader[tabular=\spaltenLresult]{grad.csv}{\spaltenZresultt}{\1 & \2 & \3 & \4 & \5}
\end{table}
}
这将导致错误提示:未定义的控制序列。{\1 & \2 & \3 & \4 & \5}。但我认为应该通过 \spaltenZresultt 来定义我做错了什么?
任何帮助都将不胜感激。非常感谢大家,因为上面的大部分内容都来自这里 ^^