논문의 형식을 표준화하기 위해 highschool.cls
우리 학교에서 고등학교 연구 논문에 대한 문서 수업을 작성하려고 합니다 . book.cls
페이지에 다음 텍스트가 나타나도록 ``인증''이라는 제목으로 서명 페이지를 정의하려고 합니다.
이를 달성하기 위해 LaTeX 클래스에 대해 다음과 같은 정의를 만들었습니다 highschool.cls
.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{highschool}
[2012/08/22 v0.1e
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@surnamea \@surnameafalse
\newif\if@surnameb \@surnamebfalse
\newif\if@surnamec \@surnamecfalse
\newif\if@firstnamea \@firstnameafalse
\newif\if@firstnameb \@firstnamebfalse
\newif\if@firstnamec \@firstnamecfalse
\newif\if@midinitiala \@midinitialafalse
\newif\if@midinitialb \@midinitialbfalse
\newif\if@midinitialc \@midinitialcfalse
\setlength\paperheight {11in}%
\setlength\paperwidth {8.5in}%
\setlength\textwidth {6in}%
\def\defenseDate#1{\gdef\@defensedate{#1}}
\def\surnamea#1{\gdef\@surnamea{#1}}
\def\firstnamea#1{\gdef\@firstnamea{#1}}
\def\midinitiala#1{\gdef\@midinitiala{#1}}
\def\surnameb#1{\gdef\@surnameb{#1}}
\def\firstnameb#1{\gdef\@firstnameb{#1}}
\def\midinitialb#1{\gdef\@midinitialb{#1}}
\def\surnamec#1{\gdef\@surnamec{#1}}
\def\firstnamec#1{\gdef\@firstnamec{#1}}
\def\midinitialc#1{\gdef\@midinitialc{#1}}
\if@compatibility
\renewcommand\@ptsize{0}
\else \DeclareOption{10pt}{\renewcommand\@ptsize{0}} \fi
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\ExecuteOptions{12pt,oneside,final,openright}
\ProcessOptions
\input{bk1\@ptsize.clo}
\def\signaturep{ %% signature page..
\topmargin 0in \headsep 0in
\begin{center}
\textbf{CERTIFICATION}\\[6pt]
\end{center}
This is to certify that this research paper entitled,
\textbf{``{\uppercase\expandafter{\@title}}''} and submitted by
\textbf{\uppercase\expandafter{\@firstnamea} \uppercase\expandafter{\@midinitiala}. \uppercase\expandafter{\@surnamea}}, \textbf{\uppercase\expandafter{\@firstnameb} \uppercase\expandafter{\@midinitialb}. \uppercase\expandafter{\@surnameb}}, and \textbf{\uppercase\expandafter{\@firstnamec} \uppercase\expandafter{\@midinitialc}. \uppercase\expandafter{\@surnamec}}
to fulfill part of the requirements for
the course Science and Technology Research II was successfully
defended and approved on \expandafter{\@defensedate}.
}%% signature page
\def\prelim{%%prelim page
\typeout{Making SMCT preliminary headings...}%
\pagestyle{plain}
\pagenumbering{roman}
\signaturep \newpage
\baselineskip=20pt
} %%prelim
\endinput
내 소스 TeX 파일에 다음과 같이 입력합니다.
\documentclass{highschool}
\defenseDate{18 August 2012}
\title{This is the Title of the Paper}
\surnamea{Author}
\firstnamea{First}
\midinitiala{N}
\surnameb{Author}
\firstnameb{Second}
\midinitialb{N}
\surnamec{Author}
\firstnamec{Third}
\midinitialc{N}
\begin{document}
\prelim %% Prints Preliminary chapters
\end{document}
내가 이루고 싶은 것은 바로
- no
\surnameb,\firstnameb,\midinitialb,\surnamec,\firstnamec,
및\midinitialc
선언된 경우 다음 텍스트가 표시됩니다.
- no
\surnamec,\firstnamec,
및\midinitialc
선언된 경우 다음 텍스트가 표시됩니다.
- 모두 선언되면 다음과 같은 텍스트가 표시됩니다.
이것이 가능합니까? 그렇다면 어떻게 해야 합니까?
답변1
다음 솔루션은 이러한 가정을 기반으로 합니다.
당신은 가질 수 있습니다
- 작성자 1; 또는
- 작성자 1, 그리고작성자 2; 또는
- 작성자 1,작성자 2, 그리고작성자 3
그리고 예를 들어
- 작성자 1, 그리고작성자 3; 또는
- 작성자 2, 그리고작성자 3; 또는
- 작성자 2오직; 또는
- 작성자 3오직.
저자가 "존재"하는지 여부를 구별하려면 이름만 제공하는 것으로 충분합니다.
두 번째 조건은 수정될 수 있지만 이름을 갖는 것이 논리적으로 보였습니다.그리고성과혹시중간 이니셜이지만 절대로~ 아니다이름. 따라서 다음 정의를 사용할 수 있습니다.
\def\defenseDate#1{\gdef\@defensedate{#1}}
\def\surnamea#1{\gdef\@surnamea{#1}\@surnameatrue}
\def\firstnamea#1{\gdef\@firstnamea{#1}\@firstnameatrue}
\def\midinitiala#1{\gdef\@midinitiala{#1}\@midinitialatrue}
\def\surnameb#1{\gdef\@surnameb{#1}\@surnamebtrue}
\def\firstnameb#1{\gdef\@firstnameb{#1}\@firstnamebtrue}
\def\midinitialb#1{\gdef\@midinitialb{#1}\@midinitialbtrue}
\def\surnamec#1{\gdef\@surnamec{#1}\@surnamectrue}
\def\firstnamec#1{\gdef\@firstnamec{#1}\@firstnamectrue}
\def\midinitialc#1{\gdef\@midinitialc{#1}\@midinitialctrue}
\def\signaturep{ %% signature page..
\topmargin 0in \headsep 0in
\begin{center}
\textbf{CERTIFICATION}\\[6pt]
\end{center}
This is to certify that this research paper entitled,
\textbf{``{\MakeUppercase{\@title}}''} and submitted by
\textbf{\MakeUppercase{\@firstnamea} \MakeUppercase{\@midinitiala}.\ \MakeUppercase{\@surnamea}}%
\if@firstnameb, \if@firstnamec\else and \fi
\textbf{\MakeUppercase{\@firstnameb} \MakeUppercase{\@midinitialb}.\ \MakeUppercase{\@surnameb}}\if@firstnamec, \else\space\fi
\if@firstnamec and \textbf{\MakeUppercase{\@firstnamec} \MakeUppercase{\@midinitialc}.\ \MakeUppercase{\@surnamec}} \fi\else\space\fi
to fulfill part of the requirements for
the course Science and Technology Research II was successfully
defended and approved on \expandafter{\@defensedate}.
}%% signature page
각 작성자 구성 요소 내부에 조건부 정의를 추가하고(only가 사용되기 때문에 실제로는 필요하지 않음 ) 조건의 진실성을 기반으로 특정 단어/구문/구두점을 포함/제외하도록 \if@firstnameX
전체에 조건을 배치했습니다 .\signaturep
입력
\documentclass{highschool}
\defenseDate{18 August 2012}
\title{This is the Title of the Paper}
\surnamea{Author}
\firstnamea{First}
\midinitiala{N}
\surnameb{Author}
\firstnameb{Second}
\midinitialb{N}
%\surnamec{Author}
%\firstnamec{Third}
%\midinitialc{N}
\begin{document}
\prelim %% Prints Preliminary chapters
\end{document}
수확량
\listauthors{{<first>},{<second>},{<third>},...}
다음 최소 예에서는 CSV 목록을 사용하여 작성자 목록을 단일 매크로로 지정하는 옵션을 추가합니다 .
\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\def\@firstmiddlelast#1,#2,#3\@nil{%
\gdef\@firstname{#1}% Extract first name
\gdef\@middlename{#2}% Extract middle name
\gdef\@lastname{#3}% Extract last name
}
\newcommand{\authorfml}{{\bfseries\MakeUppercase{\@firstname\ \@middlename\unskip\ \@lastname}}}% First Middle Last
\newcommand{\authorlfm}{\@lastname,\ \@firstname\ \@middlename\unskip}% Last, First Middle
\newcommand{\authorseq}{\authorfml}% Default author order
\newcounter{@list@item}\newcounter{@total@item}
\newcommand{\listauthors}[1]{%
\setcounter{@total@item}{0}% Reset total count
\renewcommand*{\do}[1]{\stepcounter{@total@item}}%
\docsvlist{#1}% Count number of items in list
\setcounter{@list@item}{1}% Start at first item
\renewcommand*{\do}[1]{%
\stepcounter{@list@item}% Move to next item
\@firstmiddlelast##1\@nil% Extract first/middle/last names
\authorseq% Print author names
\ifnum\value{@list@item}=\value{@total@item}\relax
, and % Second-to-last name
\else
\ifnum\value{@list@item}<\value{@total@item}\relax
, % First set of names
\fi
\fi
}%
\docsvlist{#1}% Print list
}
\makeatother
\begin{document}
See \listauthors{{First1,Middle1,Last1},{First2,,Last2},{First3,Middle3,Last3},
{First4,Middle4,Last4},{First5,,Last5},{First6,Middle6,Last6},
{First7,Middle7,Last7},{First8,Middle8,Last8},{First9,,Last9}} from first to last. \par
\renewcommand{\authorseq}{\authorlfm}
See \listauthors{{First1,Middle1,Last1},{First2,,Last2},{First3,Middle3,Last3}} from first to last. \par
\end{document}
정의에 따라 \authorseq
제목이 인쇄되는 방식이 결정됩니다. \authorseq
기본값은 \authorfml
작성자 목록을 다음과 같이 인쇄합니다 <first name>\ <middle name>\unskip\ <last name>
( 이전 제어 공간 제거 시 \unskip
누락/존재하지 않음 처리 ). 저자 표시 전환(필요한 경우 초록 및 소개에 사용)은 의 재정의에 의해 수행되며 서식은 사용된 매크로( 또는 기타) 내에서 제어됩니다.<middle name>
\
\authorseq
\authorfml
\authorlfm