특정 카운터 값의 배열 생성

특정 카운터 값의 배열 생성

foreach 루프에서 사용할 카운터의 특정 값을 포함하는 배열을 만들고 싶습니다. 그래서 목록 끝에 실제 카운터 값을 추가하는 명령을 정의하고 싶습니다. 내가 할 수 있는 일은:

\documentclass{standalone}
\usepackage{pgfmath,pgffor}
\begin{document}
\def\names{{"Katie","Frank","Laura","Joe"}}%
\newcounter{lines}%
\setcounter{lines}{3}%
\def\arr{1,\arabic{lines}}%

\foreach \i in \arr {%
  Name \i: \pgfmathparse{\names[\i]}\pgfmathresult, }

\end{document}

하지만 나에게 필요한 것은 빈 목록 과 예를 들어 같은 값으로 arr채우는 데 사용할 수 있는 함수입니다 .arrlines\addtoarr{\arabic{lines}}

나는 lstdock다음과 같은 패키지를 사용해 보았습니다.

\let\arr\@empty

\def\addtolist#1#2{%
  \lst@lAddTo#1{#2}}

\addtolist{\arr}{\arabic{lines}}

하지만 이로 인해 이해할 수 없는 오류가 발생합니다.

답변1

다양한 방법이 있습니다. 여기에 하나가 있습니다.

\documentclass{article}
\usepackage{pgfmath,pgffor}
\begin{document}
\def\names{{"Katie","Frank","Laura","Joe"}}%
\newcounter{lines}%
\setcounter{lines}{1}%

\newcommand*\arr{}%
\newcommand{\mtadd}{%
\ifx\arr\empty
\edef\arr{\arabic{lines}}
\else\edef\arr{\arr,\arabic{lines}}
\fi}

\mtadd
\setcounter{lines}{3}%
\mtadd
\foreach \i in \arr {%
  Name \i: \pgfmathparse{\names[\i]}\pgfmathresult, }

\end{document}

답변2

목록의 일부 내용을 내보내는 데 관심이 있다면 아마도 다음이 흥미로울 수 있습니다.

여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage{etoolbox}

\newcommand{\listsep}{, }
\makeatletter
\newcommand{\@insertlistsep}{}
\newcounter{@listname}
\newcommand{\addtolist}[1]{%
  \stepcounter{@listname}% Add one person to counter
  \expandafter\@namedef\expandafter{@listnames:\the@listname}{#1}}% Define counter-based name
\newcommand{\printlist}[1]{%
  \renewcommand{\@insertlistsep}{\renewcommand{\@insertlistsep}{\listsep}}% https://tex.stackexchange.com/a/89187/5764
  \renewcommand*{\do}[1]{\@insertlistsep Name~##1: \textbf{\@nameuse{@listnames:##1}}}% How each item will be processed
  \docsvlist{#1}}% Process list
\makeatother

\begin{document}

\addtolist{Katie}% 1
\addtolist{Frank}% 2
\addtolist{Laura}% 3
\addtolist{Joe}% 4

\printlist{1,2}

\printlist{}

\printlist{1,3,4}

\printlist{3,3,3}

\end{document}

필요한 경우 추가 작업은 기능을 구축하는 것 \clearlist뿐 아니라 목록 외부의 요소에 액세스하지 않도록 하기 위한 일부 오류 검사도 포함합니다.

목록 처리에 대해서는 다음에서 설명합니다.쉼표로 구분된 목록을 반복하는 방법은 무엇입니까?

관련 정보