Настройка количества членов экзаменационной комиссии на листе утверждения

Настройка количества членов экзаменационной комиссии на листе утверждения

Я знаю, что здесь уже есть по крайней мере один вопрос о том, как настроить лист одобрения. Однако вопрос, который я вам сейчас задаю, немного отличается, потому что сам вопрос касается того, как автоматизировать количество членов экзаменационной комиссии. Часто, в зависимости от программы, к которой прикреплен студент, комиссия может состоять из трех, четырех, пяти или более членов. Таким образом, я хотел бы составить код, в котором я мог бы сообщить в преамбуле документа следующую информацию: 1 - сообщить количество членов экзаменационной комиссии; 2 - ввести имя первого члена; 3 - сообщить звание первого члена; 4 - сообщить учреждение первого члена и так далее. Конечно, пункты 2, 3 и 4 будут повторяться, поскольку я сообщал количество членов, присутствующих в комиссии. Возможно ли создать такой код?

Ниже я привожу минимальный пример.

\documentclass[12pt,a4paper]{memoir}
\parindent0pt

\setSpacing{1.5}

\abnormalparskip{0.2\baselineskip}%
\setlength{\parindent}{1.5cm}%
\renewcommand*{\footnoterule}{\kern -3pt \hrule width 50mm \kern 
2.6pt}%

\setlrmarginsandblock{30mm}{20mm}{*}%
\setulmarginsandblock{30mm}{20mm}{*}%
\setheadfoot{\baselineskip}{2\baselineskip}
\setheaderspaces{20.0mm}{*}{*}%
\setmarginnotes{2.0mm}{16mm}{5.0mm}%
\setcolsepandrule{3.5mm}{0.15mm}
\setfootins{\bigskipamount}{\bigskipamount}
\checkandfixthelayout[fixed]

\newcommand{\committeemembernumber}[1]{#1}

\newcommand{\memberonename}[1]{\gdef\thememberonename{#1}}
\newcommand{\memberoneinstitute}[1]{\gdef\thememberoneinstitute{#1}}

\newcommand{\membertwoname}[1]{\gdef\themembertwoname{#1}}
\newcommand{\membertwoinstitute}[1]{\gdef\themembertwoinstitute{#1}}

\newcommand{\memberthreename}[1]{\gdef\thememberthreename{#1}}
\newcommand{\memberthreeinstitute}[1]{\gdef\thememberthreeinstitute{#1}}

\newcommand{\memberfourname}[1]{\gdef\thememberfourname{#1}}
\newcommand{\memberfourinstitute}[1]{\gdef\thememberfourinstitute{#1}}

\newcommand{\memberfivename}[1]{\gdef\thememberfivename{#1}}
\newcommand{\memberfiveinstitute}[1]{\gdef\thememberfiveinstitute{#1}}


\title{Approval sheet: an example for the LaTeX}
\author{Alexsandro Lucena Mota}
\date{2020}

%\committeemembernumber{3}

\memberonename{Prof.~MA. Sir Isaac Newton}
\memberoneinstitute{Trinity College -- University of Cambrigde}

\membertwoname{Prof.~PhD. Albert Einstein}
\membertwoinstitute{Institute for Advanced Study (IAS)}

\memberthreename{Prof. PhD. Paul Adrien Maurice Dirac}
\memberthreeinstitute{Florida State University}

\memberfourname{Prof. PhD. Richard Phillips Feynman}
\memberfourinstitute{California Institute of Technology -- Caltech}

\memberfivename{Prof. PhD. Murray Gell-Mann}
\memberfiveinstitute{California Institute of Technology -- Caltech}

\begin{document}
    \thispagestyle{empty}
    \begin{center}
        {\large \theauthor\par}
        
        \vspace{\baselineskip}
        
        {\Large
            \begin{OnehalfSpace}%
                \bfseries\thetitle\par%
            \end{OnehalfSpace}%
    }

    \vspace{0.0cm}
    
    \end{center}
    \begin{flushright}%
        \begin{minipage}{0.55\textwidth}%
            \begin{SingleSpacing}%     
                {\small Doctoral thesis presented at Postgraduate 
                Program in Physics of the Universidade Federal do 
                Maranhão as prerequisite to obtain the Doctoral 
                degree.}\par
            
                {\small {\bfseries Research line:} Topological 
                field theory with Lorentz symmetry breaking.}\par%
            \end{SingleSpacing}%
        \end{minipage}%
    \end{flushright}

    \vspace{\baselineskip}
    
    Approval in: \rule[0.0cm]{3cm}{0.04cm}~ 
    \rule[0.0cm]{1cm}{0.04cm},~\thedate.\par
    
    \vspace{\baselineskip}
    
    \begin{center}
        
        {\Large Examining  Committee}\par%
        
        \vspace{\baselineskip}  
        
        \begin{SingleSpacing}
                  
            \rule{12cm}{0.04cm}\par%
            \thememberonename\par%
            \thememberoneinstitute\par
                  
            \vspace{1.9\baselineskip}
            
            \rule{12cm}{0.04cm}\par
            \themembertwoname\par%
            \themembertwoinstitute\par
            
            \vspace{1.9\baselineskip}      
            
            \rule{12cm}{0.04cm}\par
            \thememberthreename\par
            \thememberthreeinstitute\par 
                 
            \vspace{1.9\baselineskip}  
            
            \rule{12cm}{0.04cm}\par
            \thememberfourname\par%
            \thememberfourinstitute\par   
                
            \vspace{1.9\baselineskip}      
              
            \rule{12cm}{0.04cm}\par
            \thememberfivename\par
            \thememberfiveinstitute\par
        \end{SingleSpacing}
    \end{center}
    
\end{document}

Этот код предоставляет следующий PDF-документ:

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

решение1

Вот один из способов сделать это. Основная идея — иметь одну команду:

\member{<name>}{<institute>}

Это автоматически назначит членство в комитете и будет отслеживать, сколько их. Затем каждому названию/принадлежности комитета присваивается уникальное имя с помощью счетчика, который отслеживает членов. Это делается с помощью оболочки, \csgdefпредоставляемой \csname ... \endcsnameпакетом etoolbox. Затем мы используем этот счетчик и цикл (используя пакет pgffor), чтобы создать правильное количество строк членов (конечно, ограниченное количеством места на странице).

\documentclass[12pt,a4paper]{memoir}
\parindent0pt

\setSpacing{1.5}

\abnormalparskip{0.2\baselineskip}%
\setlength{\parindent}{1.5cm}%
\renewcommand*{\footnoterule}{\kern -3pt \hrule width 50mm \kern 
2.6pt}%

\setlrmarginsandblock{30mm}{20mm}{*}%
\setulmarginsandblock{30mm}{20mm}{*}%
\setheadfoot{\baselineskip}{2\baselineskip}
\setheaderspaces{20.0mm}{*}{*}%
\setmarginnotes{2.0mm}{16mm}{5.0mm}%
\setcolsepandrule{3.5mm}{0.15mm}
\setfootins{\bigskipamount}{\bigskipamount}
\checkandfixthelayout[fixed]

\usepackage{etoolbox}
\usepackage{pgffor}
\newcounter{committee}

\newcommand{\member}[2]{\stepcounter{committee}\csgdef{member\thecommittee}{#1}
\csgdef{institute\thecommittee}{#2}}


\title{Approval sheet: an example for the LaTeX}
\author{Alexsandro Lucena Mota}
\date{2020}


\member{Prof.~MA. Sir Isaac Newton}{Trinity College -- University of Cambridge}

\member{Prof.~PhD. Albert Einstein}{Institute for Advanced Study (IAS)}

\member{Prof. PhD. Paul Adrien Maurice Dirac}{Florida State University}

\member{Prof. PhD. Richard Phillips Feynman}{California Institute of Technology -- Caltech}

\member{Prof. PhD. Murray Gell-Mann}{California Institute of Technology -- Caltech}

\begin{document}
    \thispagestyle{empty}
    \begin{center}
        {\large \theauthor\par}
        
        \vspace{\baselineskip}
        
        {\Large
            \begin{OnehalfSpace}%
                \bfseries\thetitle\par%
            \end{OnehalfSpace}%
    }

    \vspace{0.0cm}
    
    \end{center}
    \begin{flushright}%
        \begin{minipage}{0.55\textwidth}%
            \begin{SingleSpacing}%     
                {\small Doctoral thesis presented at Postgraduate 
                Program in Physics of the Universidade Federal do 
                Maranhão as prerequisite to obtain the Doctoral 
                degree.}\par
            
                {\small {\bfseries Research line:} Topological 
                field theory with Lorentz symmetry breaking.}\par%
            \end{SingleSpacing}%
        \end{minipage}%
    \end{flushright}

    \vspace{\baselineskip}
    
    Approval in: \rule[0.0cm]{3cm}{0.04cm}~ 
    \rule[0.0cm]{1cm}{0.04cm},~\thedate.\par
    
    \vspace{\baselineskip}
    
    \begin{center}
        
        {\Large Examining  Committee}\par%
        
        \vspace{\baselineskip}  
        
        \begin{SingleSpacing}
            \foreach \x in {1,...,\value{committee}}{  
            \rule{12cm}{0.04cm}\par%
            \csuse{member\x}\par%
            \csuse{institute\x}\par
                  
            \vspace{1.9\baselineskip}
            }
        \end{SingleSpacing}
    \end{center}
    
\end{document}

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