
定義されており\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}}
\newcommand
最上位レベルのメタマクロにLaTeX コマンドを使用したことに注意してください(これが望ましい方法です)。これは\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
パッケージのリスト処理機能を使用する、つまり、use\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
。2\@reviewer
つのコマンド\printeditor
と は、\printreviewer
リストをループし、それぞれのリストの内容を出力します。
たとえば、 の定義で、\@editor
とをと\@reviewer
に置き換えます。\printeditor
\printreviewer
\maketitle