2016-02-06 4 views
0

У меня есть список имен, которые я хотел бы ввести в заданное окружение, например. коробка. По-другому: я хочу, чтобы LaTex создавал окружение для каждого элемента в данном списке.ввод всех элементов списка в среду

Вот мой список: Франк, Фред, Фрэн

Вот мое окружение:

\fbox{\name}

\name делает следующее: он вводит первый элемент из списка и создает другую \ Функциональный блок для каждый последующий элемент в списке до конца списка, в результате вывод которого совпадает с (но сохранение набора)

\fbox{Frank} \fbox{Fred} \fbox{Fran}

Я думаю о списке имен как «счет» (переопределяя 1 как Фрэнк, 2 как Фред ...), и это может быть неправильный подход. Я понимаю, что команда, возможно, не может делать эти две вещи сразу.

Если есть простое решение этого вопроса: что он называется и где я могу его найти? поиск «переменных» или «foreach» не помог.

ответ

0

В зависимости от вашего приложения, вы можете либо указать список в явном виде, или в файле:

  1. В качестве явного списка (см How to iterate over a comma separated list?):

    \documentclass{article} 
    \usepackage{etoolbox} 
    
    \newcommand{\printlist}[1]{% 
        \begin{enumerate} 
        \renewcommand*{\do}[1]{\item \fbox{##1}}% 
        \docsvlist{#1}% 
        \end{enumerate}% 
    } 
    
    \begin{document} 
    
    \printlist{Frank, Fred, Fran} 
    
    \end{document} 
    
  2. Как файл в (скажем) names.csv:

    \documentclass{article} 
    
    \usepackage{filecontents} 
    \begin{filecontents*}{names.csv} 
    Frank 
    Fred 
    Fran 
    \end{filecontents*} 
    
    \usepackage{datatool} 
    
    \newcommand{\printlist}[1]{% 
        \DTLloaddb[noheader,keys=name]{namesdb}{#1}% Load names database file 
        \begin{enumerate} 
        \DTLforeach{namesdb}{\name=name}{\item \fbox{\name}} 
        \end{enumerate} 
    } 
    
    \begin{document} 
    
    \printlist{names.csv} 
    
    \end{document} 
    

В обоих случаях выход напоминает:

enter image description here

+0

для второго примера, мне нужно как среда filecontents И файл? – petz

+0

@petz: Нет. Filecontents позволяет вам создать файл, вот и все. Использование filecontents просто для того, чтобы сделать пример автономным. Вы можете создать файл в любой среде, находящейся вне LaTeX. – Werner

+0

ОК изумительный, который сработал для меня. благодаря – petz