2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 как напечатать аргумент n раз?
Сообщение09.03.2008, 20:28 
Здравствуйте!

Скажите пожалуйста, есть ли команда вида \printntimes{arg}{n}, копирующая аргумент "arg" n раз? То есть из \printntimes{example}{3} нужно получить exampleexampleexample.
Желательно, чтобы в качестве n можно было подставить, например, enumi.

Р.S. Мне на самом деле нужно чтобы элементы списка вида
Hack attempt!
не нумеровались, а штриховались, т.е. вместо 1.1, 1.2 и т.д нужно получить 1', 1'' и т.д. В принципе я могу сделать по аналогии с командой \ralph, приведённой у Львовского, но мне кажется что должен быть более простой способ...
Код приведённого списка имеет вид:
Код:
\begin{enumerate}
\renewcommand{\theenumi}{1.\arabic{enumi}}
\item Первый пункт.
\item Второй пункт.
\end{enumerate}


Заранее спасибо!

 
 
 
 Re: как напечатать аргумент n раз?
Сообщение10.03.2008, 01:12 
nckg писал(а):
Скажите пожалуйста, есть ли команда вида \printntimes{arg}{n}, копирующая аргумент "arg" n раз?

Такую команду можно определить, используя конструкцию \loop ... \repeat:
Код:
\newcount\myloopcounter
\newcommand{\ntimes}[2]{\myloopcounter=0%
\loop\ifnum\myloopcounter<#2\advance\myloopcounter by1%
#1\repeat}

P. S. По-моему, в данном случае лучше определить как \ralph у Львовского, так как число повторов предполагается очень небольшим. А ещё лучше использовать нормальные, человеческие способы нумерации. :wink:

 
 
 
 Ещё есть пакет enumerate (штрихи делать не умеет)
Сообщение10.03.2008, 13:12 
Небольшой офтопик: если хочется модифицировать оформление нумерованных списков, то можно взглянуть на пакет enumerate. Пакет не умеет выводить номера в виде штрихов, но немножко автоматизирует печать счётчика списка в форматах \Alph, \alph, \Roman, \roman, \arabic. Файл документации (enumerate.dvi или enumerate.pdf) обычно находится в папке texmf/doc/latex/tools.

 
 
 
 
Сообщение10.03.2008, 13:33 
Спасибо за ответ! Но вот такой код у меня не работает:

Код:
\newcount\myloopcounter
\newcommand{\ntimes}[2]{\myloopcounter=0%
\loop\ifnum\myloopcounter<#2\advance\myloopcounter by1%
#1\repeat}

\begin{enumerate}
\renewcommand{\theenumi}{\ntimes{a}{enumi}}
\item Первый пункт.
\item Второй пункт.
\end{enumerate}


Выдаёт следующую ошибку:

Код:
! Missing number, treated as zero.
<to be read again>
                   e
l.98 \item П
            ервый пункт.
?


Видимо, \ntimes срабатывает раньше, чем нужно...

 
 
 
 подставлять значение счётчика
Сообщение10.03.2008, 16:13 
nckg писал(а):
Спасибо за ответ! Но вот такой код у меня не работает:
Код:
...
\renewcommand{\theenumi}{\ntimes{a}{enumi}}
...

Команде ntimes в качестве второго аргумента нужно число, а не строка enumi. Чтобы подставлялось значение счётчика enumi, можно написать там \value{enumi} или \arabic{enumi}.

 
 
 
 
Сообщение10.03.2008, 20:13 
Всё, спасибо за помощь! С \value всё заработало!
Пакет enumerate буду иметь в виду.

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group