Можете ли вы повторить в LaTeX? - PullRequest
3 голосов
/ 31 декабря 2008

Я новичок в LaTeX и должен сказать, что я действительно борюсь с этим. Я обнаружил команду \ newcommand, которая похожа на функцию / метод в обычных языках программирования. Вы можете дать ему аргументы и все.

Мне было интересно, могу ли я как-то перебрать LaTeX? По сути, я хотел бы создать таблицу с N + 1 столбцами, в которой первая строка содержит пустую ячейку, а затем цифры 1, 2, ..., N в других столбцах. Я только хочу дать N в качестве аргумента этой «функции» (newcommand).

Вот пример того, что может выглядеть так, как я ищу (хотя, очевидно, это не сработает):

\newcommand{\mytable}[2]{  
\begin{tabular}{l|*{#1}{c|}} % table with first argument+1 columns  
  for(int i = 1; i <= #1; i++) "& i" % 'output' numbers in different columns  
  \\\hline  
  letters & #2 % second argument should contain actual content for row  
  \\\hline  
\end{tabular}  
}

Позвоните по номеру:

\mytable{3}{a & b & c}

Вывод должен быть:

        | 1 | 2 | 3 |
--------+---+---+---+
letters | a | b | c |
--------+---+---+---+

Кто-нибудь знает, возможно ли что-то подобное?

Спасибо!

Ответы [ 5 ]

3 голосов
/ 31 декабря 2008

Просто добавьте следующую команду в новую команду и обязательно используйте пакет ifthen.

\begin{tabular}{l|*{10}{c|}}
\newcounter{count}
\whiledo{\value{count}<10}{
\ifthenelse{\value{count}=0}{}{\the\value{count}}
\ifthenelse{\value{count}<9}{&}{\\}
\stepcounter{count}
}
letters&a&b&c&d&e&f&g&h&i\\
\end{tabular}
3 голосов
/ 31 декабря 2008

Вы можете использовать токены \loop или \repeat. Или пакет multido.

3 голосов
/ 31 декабря 2008

тетя Гугл говорит да .

2 голосов
/ 20 апреля 2009

Другая возможность (если вы ленивы, как я) - perltex

2 голосов
/ 31 декабря 2008

Конечно, это возможно. Вы также можете повторить. В eplain есть итерационные макросы, см., например, здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...