是否有乳胶数组?我的意思不是排版阵列的方式。我的意思是数组作为在胶乳/ 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\expandafterjumps超过下一个标记,在这种情况下,控制顺序\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}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top