Это массив, как его можно реализовать в LaTeX:
\documentclass{article}
\begin{document}
\newcounter{mycounter}
\setcounter{mycounter}{1}
% ary is any prefix you want, it should not exist as a command.
\expandafter\newcommand\csname ary\the\value{mycounter} \endcsname{myfirstelement}
\stepcounter{mycounter}
\expandafter\newcommand\csname ary\the\value{mycounter} \endcsname{mysecondelement}
\csname ary1 \endcsname
or
\newcounter{index}
\setcounter{index}{2}
\csname ary\the\value{index} \endcsname
\end{document}
Запустите это через LaTeX (latex mydoc.tex или pdflatex mydoc.tex), и вы увидите вывод.
Краткое объяснение: здесь создаются две команды (с новой командой): ary1 и ary2. \expandafter
необходим, потому что newcommand
должен определять не \csname
, а команду, созданную \csname
... \endcsname
. \expandafter
перепрыгивает через следующий токен, в этом случае последовательность управления \newcommand
и выполняет следующую команду, прежде чем TeX увидит \newcommand
. Это означает, что первое, что видит в новых строках команд TeX - это конструкция \csname
... \endcsname
, TeX выполняет ее, а затем выполняет \newcommand
с результатом конструкции \csname
... \endcsname
, \csname foo\endcsname
совпадает с \foo
, но вы можете использовать любой символ или даже пробел в команде, созданной \csname
... \endcsname
.
Это не тривиально. Смотрите великую книгу "TeX by topic" от Виктора Эйххоута: http://eijkhout.net/texbytopic/texbytopic.html