Одна и та же команда используется несколько раз, но я получаю только последний вывод

Одна и та же команда используется несколько раз, но я получаю только последний вывод

Я определен \editor{strong text}и \reviewer{strong text}команда используется больше одного раза. Но я получаю только последний \editor{Some Text}вывод команды.

Мой файл класса определил эту команду следующим образом:

\def\@editor{}
\def\editor#1{%
     \gdef\@editor{\raggedright \textbf{Edited by:}\newline #1}}

\def\@reviewer{}
\def\reviewer#1{%
     \gdef\@reviewer{\raggedright \textbf{Reviewed by:}\newline #1}}

\def\@maketitle{%
  \newpage
  \null
  \vskip 50pc%
\vbox{\hbox to 0pt{\vbox to 0pt{\vskip -40pc%
\begin{minipage}[b]{10pc}
{\@editor\par}
    \vskip 1.5em%
{\@reviewer\par}
    \vskip 1.5em%
{\@correspondence\par}%
    \vskip 1.5em%
{\@metanote}%
\end{minipage}
\hspace*{12pt}
\begin{minipage}[b]{31pc}  
  \let \footnote \thanks
    {\raggedright\fontsize{18pt}{20pt}\selectfont\color{colorA}\@title \par}%
    \vskip 1.5em%
    {\large
%      \lineskip .5em%
      \begin{tabular}[t]{l}%
        \raggedright\@author
      \end{tabular}\par}%
    \vskip 1em%
    {\@abstract\par}
    \vskip 1em%
    {\@keywords\par}
    \vskip 1em%
    {\@firstpara\par}
   \end{minipage}}}}%
  \par
  \vskip 8.5em}

Ниже приведена моя кодировка TeX-файла:

\editor{Wagner L. Ara\'{u}jo, Universidade Federal de Vi\c{c}osa, Brazil}
\editor{Kannan L. juvio, Universidade Federal de Vi\c{c}osa, Brazil}
\reviewer{Jedrzej Jakub Szymanski, Max Planck Institute of Molecular Plant Physiology, Germany }
\reviewer{Dimas Mendes Ribeiro, Universidade Federal de Vi\c{c}osa, Brazil}

Я не меняю структуру кодирования, потому что мой .texфайл использует другой процесс преобразования. Мойпроблема в том,только выходраспечатать последний вывод редактора.Я не знаю, как распечататькаждый редактор и рецензент. Пожалуйста, предоставьте решение для печатибольше, чем количество редакторов и рецензентов.

Мой вывод выглядит так:

Редактор Рецензент Детали Текст Выходное Изображение

решение1

Обычно вынедобавьте метазаголовок «Отредактировано:» к макросу, который собирает метаинформацию, например

\newcommand{\editor}[1]{\def\@editor{\raggedright \textbf{Edited by:}\newline #1}}

Обратите внимание, что я использовал команду LaTeX \newcommandдля метамакроса верхнего уровня (это предпочтительнее!), и она \gdefне нужна для определения внутреннего метахранилища, т. е \@editor. \defдостаточно ;.

В вашем случае вы можете использовать метакоманду, которая увеличивает внутреннюю память как

\newcommand{\editor}[1]{\edef\@editor{\@editor #1}}

Чтобы внести минимум изменений в уже существующую настройку, конечная версия выглядит так:

\newcommand{\editor}[1]{\protected@edef\@editor{\@editor\newline#1\vspace{3pt}}}

Полный код приведен в конце. Вы увидите, что некоторые изменения были неизбежны. В этом случае я также очистил весь код.

введите описание изображения здесь

\documentclass{article}
\usepackage{color}

\makeatletter
\let\@editor\@empty
\newcommand{\editor}[1]{\protected@edef\@editor{\@editor\newline#1\vspace{3pt}}}
\let\@reviewer\@empty
\newcommand{\reviewer}[1]{\protected@edef\@reviewer{\@reviewer\newline#1\vspace{2pt}}}
\let\@correspondence\@empty
\newcommand{\correspondence}[1]{%
  \protected@edef\@correspondence{\@correspondence\newline#1\vspace{2pt}}}
\def\@maketitle{%
  \vspace{50pc}%
  \noindent
  \begin{minipage}{.33\textwidth}
    \raggedright
    \textbf{Edited by:}\vspace{3pt}
      \@editor
    \par\vspace{1.5em}
    \textbf{Reviewed by:}\vspace{3pt}
      \@reviewer
    \par\vspace{1.5em}
    \textit{Correspondence:}\vspace{3pt}
      \@correspondence
    \par\vspace{1.5em}
    \@metanote%
  \end{minipage}%
  \hspace{12pt}%
  \begin{minipage}{.66\textwidth}
    \let \footnote \thanks
    \let \and      \newline
    \begin{tabular}[t]{p{\textwidth}}
      {\fontsize{18pt}{20pt}\selectfont\color{blue}\@title} \\[1.5em]
      {\large \@author} \\[2em]
      {\small \@abstract} \\[1em]
      Keywords: \@keywords \\[1em]
      \@firstpara
    \end{tabular}
  \end{minipage}
  \par
  \vskip 8.5em}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%auxiliary macros (not provided in the MWE!)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand{\abstract}[1]{\def\@abstract{#1}}
\newcommand{\keywords}[1]{\def\@keywords{#1}}
\let\@firstpara\@empty
\let\@metanote\@empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatother

\editor{Wagner L. Ara\'{u}jo, Universidade Federal de Vi\c{c}osa, Brazil}
\editor{Kannan L. juvio, Universidade Federal de Vi\c{c}osa, Brazil}
\reviewer{Jedrzej Jakub Szymanski, Max Planck Institute of Molecular Plant Physiology, Germany }
\reviewer{Dimas Mendes Ribeiro, Universidade Federal de Vi\c{c}osa, Brazil}
\correspondence{Jana Doe, University of TeX Wizardry}
\author{John Doe}
\title{Multiple usage of meta macros}
\abstract{Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.   

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.   

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.}
\keywords{Lorem, Ipsum, Dolor, Sit}

\begin{document}
\maketitle
\end{document}

решение2

Как было сказано в некоторых комментариях, текущие определения \editorи \reviewerпредназначены для установки содержания, и каждое из них перезаписывает предыдущее.

Вот простое определение (использующее возможности обработки списков пакета etoolbox, т. е. используйте \RequirePackage{etoolbox}или `\usepackage{etoolbox} для его загрузки).

\newcommand{\@editor}{}
\newcommand{\@reviewer}{}

\newcommand{\editor}[1]{\listadd{\@editor}{#1}}
\newcommand{\reviewer}[1]{\listadd{\@reviewer}{#1}}
\newcommand{\printeditor}{Edited By:\newline\dolistloop{\@editor}}
\newcommand{\printreviewer}{Reviewed By:\newline\dolistloop{\@reviewer}} 

Таким образом, команда \editor{some text}и \reviewer{some text}добавляет свой аргумент в списки редакторов (хранящиеся в \@editorи \@reviewer). Две команды \printeditor и \printreviewerперебирают список и выводят содержимое соответствующих списков.

Например, замените \@editorи \@reviewerна \printeditorи \printreviewerв данном определении \maketitle.

Связанный контент