有没有办法定义一个环境,自动生成表格的第一行和第一列,让您像往常一样填写其余的条目?
我来告诉你我的意思。
我偶尔仍会研究梵语,任何研究过融合语言的人都会熟悉范式的概念。每个名词可以出现在各种不同的格和数中,每种格和数都有特定的形式,以显示单词在句子中的作用。例如,烈火意思是“火”。如果我想说“在火中”,我会用阿格瑙如果我想说“来自火灾”,我会用火祭。
名词的所有可能形式都可以用表格来表示。这是范例。因此:
\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{amsmath}
\usepackage{array}
\begin{document}
\begin{tabular}{>{\scshape}l|*{3}{>{\itshape}c}}
& \normalfont{\textsc{sg}} & \normalfont{\textsc{du}} &
\normalfont{\textsc{pl}} \\ \hline
nom & agni\d{h} & agn\={\i} & agnaya\d{h} \\
acc & agnim & agn\={\i} & agn\={\i}n \\
ins & agnin\={a} & agnibhy\={a}m & agnibhi\d{h} \\
dat & agnaye & agnibhy\={a}m & agnibhya\d{h} \\
abl & agne\d{h} & agnibhy\={a}m & agnibhya\d{h} \\
gen & agne\d{h} & agnyo\d{h} & agn\={\i}n\={a}m \\
loc & agnau & agnyo\d{h} & agni\d{s}u \\
voc & agne & agn\={\i} & agnaya\d{h} \\
\end{tabular}
\end{document}
现在每个名词都有一个范式(尽管顺便说一句,梵语的许多理论形式在实际使用中并未得到证实)。你可以想象,骨架(第一行和第一列)是不变的,但表格的内容每次都会发生变化。
我想要的是一个可以定义表格外部的环境,并让我输入内容,如下所示:
\begin{paradigm}
k\={u}pa\d{h} & k\={u}pau & k\={u}p\={a}\d{h} \\
k\={u}pam & k\={u}pau & k\={u}p\={a}n \\
k\={u}pena & k\={u}p\={a}bhy\={a}m & k\={u}pai\d{h} \\
k\={u}p\={a}ya & k\={u}p\={a}bhy\={a}m & k\={u}pebhya\d{h} \\
k\={u}p\={a}t & k\={u}p\={a}bhy\={a}m & k\={u}pebhya\d{h} \\
k\={u}pasya & k\={u}payo\d{h} & k\={u}p\={a}n\={a}m \\
k\={u}pe & k\={u}payo\d{h} & k\={u}pe\d{s}u \\
k\={u}pa & k\={u}pau & k\={u}p\={a}\d{h} \\
\end{paradigm}
这将产生:
我只是不知道如何在不定义 24 个参数的命令的情况下生成这个命令(这是否可能),因为这需要在每个参数周围加上括号,而且麻烦多多。但我提出这一点,希望这对巫师来说可能是一个有趣的挑战。
答案1
以下是 的基本实现paradigm
,它基于 的重新定义,设置了tabular
以及第一列。请注意,应避免在(或)之前\\
使用终端:\\
\end{tabular}
\end{paradigm}
\documentclass{article}
\usepackage{array}
\newcounter{paradigmlinecnt}
\makeatletter
\newcommand{\paradigmnewline}{%
\paradigmnewline@% Regular tabular newline
\stepcounter{paradigmlinecnt}%
\ifcase\value{paradigmlinecnt} %
\or %nom % 1 (nom already set as part of \begin{paradigm}
\or acc % 2
\or ins % 3
\or dat % 4
\or abl % 5
\or gen % 6
\or loc % 7
\or voc % 8
\else ???
\fi
&
}
\newenvironment{paradigm}
{\global\let\savenewline\\% Store meaning of \\ outside of tabular
\setcounter{paradigmlinecnt}{1}%
\begin{tabular}{ >{\scshape}l | *{3}{>{\itshape}c} }% Default paradigm tabular specification
& \normalfont{\textsc{sg}} & \normalfont{\textsc{du}} &
\normalfont{\textsc{pl}} \\ \hline % Header rule
nom & % First row start
\global\let\paradigmnewline@\\ % Redefine the way \\ works
\global\let\\\paradigmnewline
}
{\end{tabular}
\global\let\\\savenewline}% Restore meaning of \\ outside tabular
\makeatother
\begin{document}
\begin{tabular}{ >{\scshape}l | *{3}{>{\itshape}c} }
& \normalfont{\textsc{sg}} & \normalfont{\textsc{du}} &
\normalfont{\textsc{pl}} \\ \hline
nom & agni\d{h} & agn\={\i} & agnaya\d{h} \\
acc & agnim & agn\={\i} & agn\={\i}n \\
ins & agnin\={a} & agnibhy\={a}m & agnibhi\d{h} \\
dat & agnaye & agnibhy\={a}m & agnibhya\d{h} \\
abl & agne\d{h} & agnibhy\={a}m & agnibhya\d{h} \\
gen & agne\d{h} & agnyo\d{h} & agn\={\i}n\={a}m \\
loc & agnau & agnyo\d{h} & agni\d{s}u \\
voc & agne & agn\={\i} & agnaya\d{h}
\end{tabular}
\begin{paradigm}
k\={u}pa\d{h} & k\={u}pau & k\={u}p\={a}\d{h} \\
k\={u}pam & k\={u}pau & k\={u}p\={a}n \\
k\={u}pena & k\={u}p\={a}bhy\={a}m & k\={u}pai\d{h} \\
k\={u}p\={a}ya & k\={u}p\={a}bhy\={a}m & k\={u}pebhya\d{h} \\
k\={u}p\={a}t & k\={u}p\={a}bhy\={a}m & k\={u}pebhya\d{h} \\
k\={u}pasya & k\={u}payo\d{h} & k\={u}p\={a}n\={a}m \\
k\={u}pe & k\={u}payo\d{h} & k\={u}pe\d{s}u \\
k\={u}pa & k\={u}pau & k\={u}p\={a}\d{h}
\end{paradigm}
\end{document}