
우리 대학의 박사 논문 표지 템플릿에는 다음과 같은 코드가 있습니다.
%%% Jury member n1 (Président) %%%
\newcommand{\jurynameA}{M. Cabot}
\newcommand{\juryadressA}{Someplace}
\newcommand{\jurygradeA}{Somerank}
\newcommand{\juryroleA}{Président du jury}
%%% Jury member n2 (Rapporteur) %%%
\newcommand{\jurynameB}{M. Blonde}
\newcommand{\juryadressB}{Anotherplace}
\newcommand{\jurygradeB}{Anotherrank}
\newcommand{\juryroleB}{Rapporteur} %
%%% Jury member n3 (Rapporteur) %%%
\newcommand{\jurynameC}{M. Blue}
\newcommand{\juryadressC}{Someotherplace}
\newcommand{\jurygradeC}{Someotherrank}
\newcommand{\juryroleC}{Rapporteur}
%%% Jury member n4 (Examinateur) %%%
\newcommand{\jurynameD}{M. Brown}
\newcommand{\juryadressD}{Yetanotherplace}
\newcommand{\jurygradeD}{Yetanotherrank}
\newcommand{\juryroleD}{Examinateur}
%%% Jury member n5 (Examinateur) %%%
\newcommand{\jurynameE}{M. Orange}
\newcommand{\juryadressE}{Onemoreplace}
\newcommand{\jurygradeE}{One more rank}
\newcommand{\juryroleE}{Examinateur}
%%% Jury member n6 (Directeur) %%%
\newcommand{\jurynameF}{M. Pink}
\newcommand{\juryadressF}{Yourplace}
\newcommand{\jurygradeF}{HDR}
\newcommand{\juryroleF}{Directeur de thèse}
%%% Jury member n7 (Co-Directeur) %%%
\newcommand{\jurynameG}{M. White}
\newcommand{\juryadressG}{Yourotherplace}
\newcommand{\jurygradeG}{HDR?}
\newcommand{\juryroleG}{Co-Directeur de thèse}
\begin{tabular}{lll}
\textsc{\jurynameA} & \jurygradeA & (\juryroleA) \\
\null & \textit{\juryadressA} & \\
\textsc{\jurynameB} & \jurygradeB & (\juryroleB) \\
\null & \textit{\juryadressB} & \\
\textsc{\jurynameC} & \jurygradeC & (\juryroleC) \\
\null & \textit{\juryadressC} & \\
\textsc{\jurynameD} & \jurygradeD & (\juryroleD) \\
\null & \textit{\juryadressD} & \\
\textsc{\jurynameE} & \jurygradeE & (\juryroleE) \\
\null & \textit{\juryadressE} & \\
\textsc{\jurynameF} & \jurygradeF & (\juryroleF) \\
\null & \textit{\juryadressF} & \\
\textsc{\jurynameG} & \jurygradeG & (\juryroleG) \\
\null & \textit{\juryadressG} & \\
\end{tabular}
\addmember{M. Pink}{Yourplace}{HDR}{Directeur de thèse}
좀 더 쉽게 데이터를 입력하고(예 : ) 심사위원 수(어떤 사람은 4명, 어떤 사람은 최대 8명)에 대해 걱정하지 않고 자동으로 테이블을 생성할 수 있지 않을까 궁금했습니다 .
예를 들어 Python에서는 각 사전이 배심원을 설명하는 사전 목록(또는 의미론에 관심이 없는 경우 목록만)을 사용하고 해당 목록을 반복하여 테이블을 작성했을 것입니다. LaTeX로 그런 일이 가능합니까?
답변1
etoolbox
다음은 및 의 표준 LaTeX 방법을 사용하여 이를 수행하는 한 가지 방법입니다 pgffor
.
\documentclass{article}
\usepackage{pgffor,etoolbox,array}
\newcounter{members}
\newcommand{\addmember}[4]{%
\ifnum\value{members}=8
\typeout{Warning: your committee has too many members! Extra members ignored.}
\else
\stepcounter{members}
\csgdef{juryname\themembers}{#1}
\csgdef{juryadress\themembers}{#2}
\csgdef{jurygrade\themembers}{#3}
\csgdef{juryrole\themembers}{#4}
\fi
}
\newcommand{\thecommitee}{}
\makeatletter
\newcommand{\makecommittee}{%
\foreach \x in {1,...,\value{members}}{
\protected@xappto{\thecommittee}{%
\csuse{juryname\x} &
\csuse{jurygrade\x} &
(\csuse{juryrole\x})\tabularnewline
&\itshape\csuse{juryadress\x} &\tabularnewline
}
}
\begin{tabular}{>{\scshape}lll}
\thecommittee
\end{tabular}
}
\makeatother
\begin{document}
\addmember{M. Cabot}{Montréal}{PhD}{Président du jury}
\addmember{M. Blonde}{Trois Rivières}{PhD}{Rapporteur}
\addmember{M. Brun}{Québec}{PhD}{Examinateur}
\addmember{M. Vert}{Paris}{PhD}{Examinateur}
\addmember{M. Gris}{Montréal}{PhD}{Directeur de thèse}
\makecommittee
\end{document}