% Author: Dongsheng Deng % Homepage: https://ddswhu.me/ % Email: elegantlatex2e@gmail.com % Lastest Version: https://github.com/ElegantLaTeX/ElegantPaper % --- Class structure: identification part \ProvidesClass{elegantpaper}[2020/04/12 v0.09 ElegantLaTeX Paper class] \NeedsTeXFormat{LaTeX2e} \RequirePackage{kvoptions} \RequirePackage{etoolbox} \RequirePackage{calc} \SetupKeyvalOptions{family=ELEGANT, prefix=ELEGANT@, setkeys=\kvsetkeys} \newcommand{\ekv}[1]{\kvsetkeys{ELEGANT}{#1}} \DeclareStringOption[en]{lang} \DeclareVoidOption{cn}{\ekv{lang=cn}} \DeclareVoidOption{en}{\ekv{lang=en}} \DeclareStringOption[cm]{math} \DeclareStringOption[numbers]{cite} \DeclareVoidOption{numbers}{\ekv{cite=numbers}} \DeclareVoidOption{authoryear}{\ekv{cite=authoryear}} \DeclareVoidOption{super}{\ekv{cite=super}} \DeclareStringOption[apalike]{bibstyle} \DeclareStringOption[ctexfont]{chinesefont} \DeclareVoidOption{ctexfont}{\ekv{chinesefont=ctexfont}} \DeclareVoidOption{founder}{\ekv{chinesefont=founder}} \DeclareVoidOption{nofont}{\ekv{chinesefont=nofont}} \DeclareVoidOption{newtx}{\ekv{math=newtx}} \DeclareVoidOption{mtpro2}{\ekv{math=mtpro2}} \DeclareVoidOption{cm}{\ekv{math=cm}} \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{article}} \ProcessKeyvalOptions*\relax \LoadClass{article} \RequirePackage{hyperref} \hypersetup{ pdfborder={0 0 0}, colorlinks=true, linkcolor={winered}, urlcolor={winered}, filecolor={winered}, citecolor={winered}, linktoc=all, } % settings for the hyperref and geometry \RequirePackage[ left=1in, right=1in, top=1in, bottom=1in, headheight=0pt, headsep=0pt]{geometry} \setlength{\headsep}{5pt} \RequirePackage{amsthm} \RequirePackage{amsmath} \RequirePackage{amssymb} \RequirePackage{indentfirst} \RequirePackage{booktabs} \RequirePackage{multicol} \RequirePackage{multirow} % \RequirePackage{linegoal} \RequirePackage{xcolor} \RequirePackage{graphicx} \RequirePackage{fancyvrb} \RequirePackage{abstract} \RequirePackage{hologo} \linespread{1.35} \graphicspath{{image/}{figure/}{fig/}{img/}} % caption settings \RequirePackage[font=small,labelfont={bf}]{caption} \captionsetup[table]{skip=3pt} \captionsetup[figure]{skip=3pt} % list/itemize/enumerate setting \RequirePackage[shortlabels,inline]{enumitem} \setlist{nolistsep} % define the hyperref color \RequirePackage{xcolor} \definecolor{winered}{rgb}{0.5,0,0} \definecolor{lightgrey}{rgb}{0.95,0.95,0.95} \definecolor{commentcolor}{RGB}{0,100,0} \definecolor{frenchplum}{RGB}{190,20,83} % add the email cmd \newcommand\email[1]{\href{mailto:#1}{\nolinkurl{#1}}} % font settings \PassOptionsToPackage{no-math}{fontspec} \ifdefstring{\ELEGANT@lang}{cn}{ \ifXeTeX \ifdefstring{\ELEGANT@chinesefont}{founder}{ \RequirePackage[UTF8,scheme=plain,fontset=none]{ctex} \setCJKmainfont[BoldFont={FZHei-B01},ItalicFont={FZKai-Z03}]{FZShuSong-Z01} \setCJKsansfont[BoldFont={FZHei-B01},ItalicFont={FZHei-B01}]{FZHei-B01} \setCJKmonofont[BoldFont={FZHei-B01},ItalicFont={FZHei-B01}]{FZFangSong-Z02} \setCJKfamilyfont{zhsong}{FZShuSong-Z01} \setCJKfamilyfont{zhhei}{FZHei-B01} \setCJKfamilyfont{zhkai}{FZKai-Z03} \setCJKfamilyfont{zhfs}{FZFangSong-Z02} \newcommand*{\songti}{\CJKfamily{zhsong}} \newcommand*{\heiti}{\CJKfamily{zhhei}} \newcommand*{\kaishu}{\CJKfamily{zhkai}} \newcommand*{\fangsong}{\CJKfamily{zhfs}}}{\relax} \ifdefstring{\ELEGANT@chinesefont}{nofont}{ \RequirePackage[UTF8,scheme=plain,fontset=none]{ctex}}{\relax} \ifdefstring{\ELEGANT@chinesefont}{ctexfont}{ \RequirePackage[UTF8,scheme=plain]{ctex}}{\relax} \else \ifdefstring{\ELEGANT@chinesefont}{ctexfont}{ \RequirePackage[UTF8,scheme=plain]{ctex}}{\relax} \fi \AfterEndPreamble{ % \renewcommand{\itshape}{\kaishu} \setlength\parindent{2\ccwd}}}{\relax} \ifcsname kaishu\endcsname \newcommand{\citshape}{\kaishu} \else \newcommand{\citshape}{\itshape} \fi \ifcsname kaishu\endcsname \newcommand{\cnormal}{\kaishu} \else \newcommand{\cnormal}{\normalfont} \fi \ifcsname fangsong\endcsname \newcommand{\cfs}{\fangsong} \else \newcommand{\cfs}{\normalfont} \fi \RequirePackage{newtxtext} \ifdefstring{\ELEGANT@math}{newtx}{ \RequirePackage{newtxmath} \let\Bbbk\relax \RequirePackage{esint} %%% use yhmath pkg, uncomment following code % \let\oldwidering\widering % \let\widering\undefined % \RequirePackage{yhmath} % \let\widering\oldwidering %%% use esvect pkg, uncomment following code % \RequirePackage{esvect} \DeclareSymbolFont{CMlargesymbols}{OMX}{cmex}{m}{n} \let\sumop\relax\let\prodop\relax \DeclareMathSymbol{\sumop}{\mathop}{CMlargesymbols}{"50} \DeclareMathSymbol{\prodop}{\mathop}{CMlargesymbols}{"51} }{\relax} \RequirePackage{appendix} \ifdefstring{\ELEGANT@lang}{cn}{ \theoremstyle{plain}% default \newtheorem{theorem}{定理}[section] % \newtheorem{lemma}[theorem]{引理} % \newtheorem{proposition}[theorem]{命题} % \newtheorem*{corollary}{推论} % \theoremstyle{definition} % \newtheorem{definition}{定义}[section] % \newtheorem{conjecture}{猜想}[section] % \newtheorem{example}{例}[section] % \theoremstyle{remark} % \newtheorem*{remark}{\normalfont\bfseries 评论} % \newtheorem*{note}{\normalfont\bfseries 注} % \newtheorem{case}{\normalfont\bfseries 案例} % \renewcommand*{\proofname}{\normalfont\bfseries 证明} % \renewcommand\contentsname{目录} \renewcommand\refname{参考文献} % \renewcommand\figurename{图} % \renewcommand\tablename{表}% \newcommand\versiontext{版本:}% \newcommand\updatetext{日期:}% \renewcommand\abstractname{摘\hspace{2em}要} \setlength\parindent{2\ccwd} \renewcommand{\abstracttextfont}{\small\citshape\noindent\ignorespaces} % 新定义命令 \newcommand{\keywords}[1]{\vskip2ex\par\noindent\normalfont{\bfseries 关键词: } #1} \newcommand\figref[1]{{\bfseries 图~\ref{#1}}} \newcommand\tabref[1]{{\bfseries 表~\ref{#1}}} \RequirePackage{gbt7714} \ifdefstring{\ELEGANT@cite}{authoryear}{ \bibliographystyle{gbt7714-author-year}}{ \bibliographystyle{gbt7714-numerical}} \ifdefstring{\ELEGANT@cite}{numbers}{ \citestyle{numbers}}{\relax} \renewcommand{\appendixtocname}{附录} \renewcommand{\appendixpagename}{附录}}{\relax} \ifdefstring{\ELEGANT@lang}{en}{ \theoremstyle{plain}% default \newtheorem{theorem}{Theorem}[section] % \newtheorem{lemma}[theorem]{Lemma} % \newtheorem{proposition}[theorem]{Proposition} % \newtheorem*{corollary}{Corollary} % \theoremstyle{definition} % \newtheorem{definition}{Definition}[section] % \newtheorem{conjecture}{Conjecture}[section] % \newtheorem{example}{Example}[section] % \theoremstyle{remark} % \newtheorem*{remark}{Remark} % \newtheorem*{note}{Note} % \newtheorem{case}{Case} % \renewcommand*{\proofname}{\normalfont\bfseries Proof}% \newcommand\versiontext{\itshape Version: }% \newcommand\updatetext{\itshape Date: }% \setlength\parindent{2em} \renewcommand{\abstracttextfont}{\sffamily\small\noindent\ignorespaces} % newcommands defined in this template. \newcommand{\keywords}[1]{\vskip 2ex\par\noindent\normalfont{\bfseries Keywords: } #1} \newcommand\figref[1]{{\bfseries Figure~\ref{#1}}} \newcommand\tabref[1]{{\bfseries Table~\ref{#1}}} \RequirePackage[\ELEGANT@cite,sort&compress]{natbib} \bibliographystyle{\ELEGANT@bibstyle}}{\relax} \setlength{\bibsep}{0.0pt} \def\bibfont{\footnotesize} \AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}} \BeforeBeginEnvironment{tabular}{\small} \AfterEndEnvironment{tabular}{} \AtBeginDocument{ \setlength{\abovedisplayskip}{3pt} \setlength{\belowdisplayskip}{3pt} \RequirePackage[flushmargin]{footmisc} \setlength{\footnotesep}{12pt}} \def\IfEmpty#1{% \edef\1{\the#1} \ifx\1\empty } \newtoks\version \newtoks\institute \renewcommand\maketitle{\par \begingroup \renewcommand\thefootnote{\@fnsymbol\c@footnote}% \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% \long\def\@makefntext##1{\parindent 1em\noindent \hb@xt@0.1em{% \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% \if@twocolumn \ifnum \col@number=\@ne \@maketitle \else \twocolumn[\@maketitle]% \fi \else \newpage \global\@topnum\z@ % Prevents figures from going at top of page. \@maketitle \fi \thispagestyle{plain}\@thanks \endgroup \setcounter{footnote}{0}% \global\let\thanks\relax \global\let\maketitle\relax \global\let\@maketitle\relax \global\let\@thanks\@empty \global\let\@author\@empty \global\let\@ELEGANT@version\@empty \global\let\@date\@empty \global\let\@title\@empty \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\and\relax \global\let\ELEGANT@version\relax } \def\@maketitle{% \newpage \null \vskip 2em% \begin{center}% \let \footnote \thanks {\LARGE\bfseries \@title \par}% \vskip 1.5em% {\large \lineskip .5em% \begin{tabular}[t]{c}% \@author\\[1ex] \end{tabular}\par} \the\institute% \vskip 0.5ex% \IfEmpty\version \else {\small\normalfont\citshape\versiontext\the\version} \fi \ifx\@date\empty \else \vskip 0.1em% {\small\normalfont\citshape\updatetext\@date}% \fi \end{center}% \par } \RequirePackage{listings} \renewcommand{\ttdefault}{cmtt} \lstdefinestyle{estyle}{ basicstyle=% \ttfamily \lst@ifdisplaystyle\footnotesize\fi } \lstset{basicstyle=\scriptsize\ttfamily,style=estyle} \lstset{language=[LaTeX]TeX, texcsstyle=*\color{winered}, numbers=none, breaklines=true, keywordstyle=\color{winered}, frame=tlbr,framesep=4pt,framerule=0pt, commentstyle=\color{commentcolor}, emph={elegantpaper,fontenc,fontspec,xeCJK,FiraMono,xunicode,newtxmath,figure,fig,image,img,table,itemize,enumerate,newtxtext,newtxtt,ctex,microtype,description,times,newtx,booktabs,tabular,PDFLaTeX,XeLaTeX,type1cm,BibTeX,cite,gbt7714,lang}, emphstyle={\color{frenchplum}}, morekeywords={DeclareSymbolFont,SetSymbolFont,toprule,midrule,bottomrule,institute,version,includegraphics,setmainfont,setsansfont,setmonofont ,setCJKmainfont,setCJKsansfont,setCJKmonofont,RequirePackage,figref,tabref,email,maketitle,keywords,zhdate,zhtoday}, tabsize=2, backgroundcolor=\color{lightgrey} }