题
是否有乳胶数组?我的意思不是排版阵列的方式。我的意思是数组作为在胶乳/ TeX的数据结构为“编程语言”。我需要存储在数组中的数VBOX-ES或hbox中-ES的。它可以是类似“宏阵列”。
更多细节:我应该排版歌曲的环境。我需要存储参数中所给我的宏\ songparagraph一些歌曲的段落(所以我不会排版他们,只是存储的段落)。由于我不知道有多少段可以在一个特定的歌曲,我需要这样的数组。当环境是封闭的,所有的段落将排版 - 但他们将先测量和每个段落的最佳位置将被计算(例如,一些段落可以在两列放在一个抛开其他,使歌曲的样子更紧凑且节省一些空间)。
任何想法将受到欢迎。 请,如果你知道在LaTeX的阵列,张贴链接到一些基本的文档,教程或只是状态基本命令。
解决方案
查核 Arrayjob 它实现阵列为胶乳。诚然,我只偷看,所以我不知道这将是多么有效。但是,如果你没有把它写自己...
其他提示
这是一个数组它如何能在乳胶中实现:
\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}
通过胶乳(胶乳mydoc.tex或pdflatex mydoc.tex)运行此,你看到的输出。
一个简短的说明:这产生两个命令(与newcommand):ary1和ary2。因为\expandafter
不应该定义newcommand
但\csname
创建命令\csname
需要的\endcsname
。 \expandafter
jumps超过下一个标记,在这种情况下,控制顺序\newcommand
和Tex看到\newcommand
之前执行下一个命令。这意味着,在newcommand线的TeX首先看到的是\csname
... \endcsname
结构,TeX的执行,然后与\newcommand
... \csname
构造的结果执行\endcsname
。 \csname foo\endcsname
相同\foo
,但可以在由\csname
... \endcsname
创建的命令使用任何字符或甚至空格。
这是不平凡的。请参阅从维克多Eijkhout伟大的书“的主题的TeX”: http://eijkhout.net/texbytopic/texbytopic。 HTML
LuaTEX等程序具有lua的表,这些表概括阵列。如果有标准乳胶是不是对你很重要,请考虑使用LuaTEX等程序的乳胶。那么你可以做这样的事情:
\def\lookup#1{\directlua {
local array={1,2,4,8}; tex.print(array[#1])}}
\[ 2 \mapsto \lookup{2} \]
LuaTEX等程序是有点片状与乳胶,因为需要转义所有种的Lua字符在乳胶代码。上下文\startluacode ... \stopluacode
宏处理Lua代码的定义,并为\ctxlua
Lua代码调用,我不明白为什么像这些不能乳胶定义任何理由。
pgfkeys和pgffor也可能为你工作。他们是 PGF (便携式图形格式)软件包的一部分,但它们可以独立于所有的使用图形的东西。
要扩大帕特里克的回答,简单的答案是“否”。然而,由于它具有宏扩展,它可以被编程为具有阵列。
下面是另外一个例子,这个人使用PUSH和POP为“阵列”。当\type@pushcolour
被调用时,它保存到堆栈中的当前颜色。 \type@popcolour
取顶部颜色定义,并使用它:
\newcount\type@count
\def\type@pushcolour{%
\xglobal\colorlet{foo\the\type@count}{.}%
\global\advance\type@count by1\relax}
\def\type@popcolour{%
\global\advance\type@count by-1\relax%
\color{foo\the\type@count}}
(I改编自来源为投影仪包此代码)
您还可以看看类似的datatool包或expl3编程系统,以及“财产清单”数据类型。
在 readarray 包允许一个输入格式的数据为元素 2-d或3-d阵列(或1-d的文件记录阵列)。
的\documentclass{standalone}
\usepackage{readarray}
\def\data{% the data
1 15 14 4
10 11 8 5
7 6 9 12
16 2 3 13
}
\readarray\data\dataA[4,4] %read the data to \dataA
\begin{document}
value at (2,1) = \dataA[2,1] %access a specific field
\end{document}