1 Star 0 Fork 1

oimath/ElegantNote

forked from ycs/ElegantNote 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
elegantnote.cls 14.39 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
% Author: Dongsheng Deng
% Homepage: https://ddswhu.me/
% Email: elegantlatex2e@gmail.com
% Lastest Version: https://github.com/ElegantLaTeX/ElegantNote
% --- Class structure: identification part
\ProvidesClass{elegantnote}[2022/12/31 ElegantNote v2.50 class]
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
\RequirePackage{calc}
\SetupKeyvalOptions{family=ELEGANT,prefix=ELEGANT@,setkeys=\kvsetkeys}
\newcommand{\ekv}[1]{\kvsetkeys{ELEGANT}{#1}}
\DeclareStringOption[blue]{color}
\DeclareVoidOption{green}{\ekv{color=green}}
\DeclareVoidOption{cyan}{\ekv{color=cyan}}
\DeclareVoidOption{blue}{\ekv{color=blue}}
\DeclareVoidOption{sakura}{\ekv{color=sakura}}
\DeclareVoidOption{black}{\ekv{color=black}}
\DeclareVoidOption{brown}{\ekv{color=brown}}
\DeclareStringOption[pad]{device}
\DeclareVoidOption{pc}{\ekv{device=pc}}
\DeclareVoidOption{pad}{\ekv{device=pad}}
\DeclareVoidOption{kindle}{\ekv{device=kindle}}
\DeclareVoidOption{normal}{\ekv{device=normal}}
\DeclareVoidOption{screen}{\ekv{device=screen}}
\DeclareStringOption[cn]{lang}
\DeclareVoidOption{cn}{\ekv{lang=cn}}
\DeclareVoidOption{en}{\ekv{lang=en}}
\DeclareStringOption{mode}
\DeclareVoidOption{geye}{\ekv{mode=geye}}
\DeclareVoidOption{hazy}{\ekv{mode=hazy}}
\DeclareVoidOption{sepia}{\ekv{mode=sepia}}
\DeclareStringOption[ctexfont]{chinesefont}
\DeclareVoidOption{ctexfont}{\ekv{chinesefont=ctexfont}}
\DeclareVoidOption{founder}{\ekv{chinesefont=founder}}
\DeclareVoidOption{nofont}{\ekv{chinesefont=nofont}}
\DeclareStringOption[numeric-comp]{citestyle}
\DeclareStringOption[numeric]{bibstyle}
\DeclareStringOption[biber]{bibend}
\DeclareVoidOption{biber}{\ekv{bibend=biber}}
\DeclareVoidOption{bibtex}{\ekv{bibend=bibtex}}
\DeclareStringOption[11pt]{fontsize}
\DeclareVoidOption{10pt}{\ekv{fontsize=10pt}}
\DeclareVoidOption{11pt}{\ekv{fontsize=11pt}}
\DeclareVoidOption{12pt}{\ekv{fontsize=12pt}}
\DeclareStringOption[cm]{math}
\DeclareVoidOption{newtx}{\ekv{math=newtx}}
\DeclareVoidOption{mtpro2}{\ekv{math=mtpro2}}
\DeclareVoidOption{cm}{\ekv{math=cm}}
\DeclareDefaultOption{
\PassOptionsToClass{\CurrentOption}{article}
}
\ProcessKeyvalOptions*\relax
\LoadClass{article}
\PassOptionsToPackage{no-math}{fontspec}
\PassOptionsToPackage{quiet}{fontspec}
\RequirePackage{amsmath,amsthm}
\RequirePackage{iftex}
\ifXeTeX
\RequirePackage[no-math]{fontspec}
\setmainfont{texgyretermes}[
UprightFont = *-regular ,
BoldFont = *-bold ,
ItalicFont = *-italic ,
BoldItalicFont = *-bolditalic ,
Extension = .otf ,
Scale = 1.0]
\setsansfont{texgyreheros}[
UprightFont = *-regular ,
BoldFont = *-bold ,
ItalicFont = *-italic ,
BoldItalicFont = *-bolditalic ,
Extension = .otf ,
Scale = 0.9]
\else
\RequirePackage{newtxtext}
\RequirePackage[scaled=.90]{helvet}
\fi
\ifdefstring{\ELEGANT@lang}{cn}{
\ifdefstring{\ELEGANT@chinesefont}{founder}{
\RequirePackage[UTF8,scheme=plain,fontset=none]{ctex}
\setCJKmainfont[BoldFont={FZHei-B01},ItalicFont={FZKai-Z03}]{FZShuSong-Z01}
\setCJKsansfont[BoldFont={FZHei-B01}]{FZKai-Z03}
\setCJKmonofont[BoldFont={FZHei-B01}]{FZFangSong-Z02}
\setCJKfamilyfont{zhsong}{FZShuSong-Z01}
\setCJKfamilyfont{zhhei}{FZHei-B01}
\setCJKfamilyfont{zhkai}[BoldFont={FZHei-B01}]{FZKai-Z03}
\setCJKfamilyfont{zhfs}[BoldFont={FZHei-B01}]{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}
\AfterEndPreamble{
\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
\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[
backend=\ELEGANT@bibend,
citestyle=\ELEGANT@citestyle,
bibstyle=\ELEGANT@bibstyle]{biblatex}
\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\color{ecolor}证明} %
\renewcommand\contentsname{\color{ecolor}目录}
\renewcommand\refname{\color{ecolor}参考文献} %
\renewcommand\figurename{} %
\renewcommand\tablename{}
\newcommand\versiontext{版本:}%
\newcommand\updatetext{更新:}%
\newcommand\ebibname{参考文献}
\setlength{\parindent}{2em}
\newcommand{\keywords}[1]{%
\vskip2ex\par\noindent\normalfont{\bfseries 关键词: } #1}
}{\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} %
\newcommand\ebibname{Bibliography}
\newtheorem{case}{Case}
\renewcommand*{\proofname}{%
\normalfont\bfseries\color{ecolor} Proof}
\newcommand\versiontext{Version: }%
\newcommand\updatetext{Update: }}{\relax}
\RequirePackage{indentfirst}
\RequirePackage{anyfontsize}
\RequirePackage{graphicx}
\RequirePackage{booktabs}
\let\openbox\relax
\RequirePackage{xcolor}
\definecolor{winered}{rgb}{0.5,0,0}
\definecolor{epubblue}{RGB}{1,126,218}
\RequirePackage{hyperref}
\RequirePackage{xpatch}
\hypersetup{%
pdfborder={0 0 0},
colorlinks,
citecolor=ecolor,
filecolor=ecolor,
linkcolor=ecolor,
urlcolor=ecolor
}
\RequirePackage{hologo}
% 行距设置
\linespread{1.3}
\setlength{\parskip}{3mm}
\setlength{\parindent}{2em}
% 定义护眼模式 geye=true
\RequirePackage{xcolor}
\RequirePackage{silence}
% good for eye color
\ifdefstring{\ELEGANT@mode}{geye}{
\definecolor{geyecolor}{RGB}{199,237,204}%
\pagecolor{geyecolor}
}{\relax}
\ifdefstring{\ELEGANT@mode}{hazy}{
\definecolor{geyecolor}{RGB}{251,250,248}%
\pagecolor{geyecolor}
}{\relax}
\ifdefstring{\ELEGANT@mode}{sepia}{
\definecolor{geyecolor}{RGB}{250,237,225}%
\pagecolor{geyecolor}
}{\relax}
% graphics path
\graphicspath{
{./figure/}
{./figures/}
{./image/}
{./images/}
{./graphics/}
{./graphic/}
{./pictures/}
{./picture/}
}
\let\openbox\relax
\newtheoremstyle{plain}{\topsep}{\topsep}{\citshape}{}{%
\color{ecolor}\bfseries}{}{%
0.5em}{%
\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}
\newtheoremstyle{definition}{\topsep}{\topsep}{\citshape}{}{%
\color{ecolor}\bfseries}{}{%
0.5em}{}
\newtheoremstyle{remark}{\topsep}{\topsep}{\cnormal}{}{
\color{ecolor}\bfseries}{}{
0.5em}{}
% caption settings
\RequirePackage{caption}
\captionsetup{
labelfont={bf,color=ecolor}}
\captionsetup[table]{skip=3pt}
\captionsetup[figure]{skip=3pt}
% list/itemize/enumerate setting
\RequirePackage[shortlabels,inline]{enumitem}
\setlist{nolistsep}
\RequirePackage[flushmargin,stable]{footmisc}
\setlength{\footnotesep}{12pt}
\RequirePackage{titlesec}
\titleformat*{\section}{\normalfont\Large\bfseries\color{ecolor}}
\titleformat*{\subsection}{\normalfont\large\bfseries\color{ecolor}}
\titleformat*{\subsubsection}{\normalfont\normalsize\bfseries\color{ecolor}}
\ifdefstring{\ELEGANT@color}{green}{
\definecolor{ecolor}{RGB}{0,120,2}%
}{\relax}
\ifdefstring{\ELEGANT@color}{cyan}{
\definecolor{ecolor}{RGB}{31,186,190}%
}{\relax}
\ifdefstring{\ELEGANT@color}{blue}{
\definecolor{ecolor}{RGB}{1,126,218}%
}{\relax}
\ifdefstring{\ELEGANT@color}{sakura}{
\definecolor{ecolor}{RGB}{255,183,197}%
}{\relax}
\ifdefstring{\ELEGANT@color}{black}{
\definecolor{ecolor}{RGB}{0,0,0}%
}{\relax}
\ifdefstring{\ELEGANT@color}{brown}{
\definecolor{ecolor}{RGB}{109,62,18}%
}{\relax}
\definecolor{egreen}{RGB}{0,120,2}
\definecolor{ecyan}{RGB}{0,175,152}
\definecolor{eblue}{RGB}{20,50,104}
\definecolor{sakura}{RGB}{255,183,197}
\definecolor{brown}{RGB}{109,62,18}
%% device settings
%% default=pad
\RequirePackage{geometry}
\WarningsOff
\RequirePackage[\ELEGANT@fontsize]{extsizes}
\WarningsOn
\ifdefstring{\ELEGANT@device}{pad}{%
\geometry{
paperwidth=6in,
paperheight=8in,
includefoot,
margin=8mm}}{%
\relax}
\ifdefstring{\ELEGANT@device}{pc}{
\geometry{%
margin=8mm,
paperwidth=6.2in,
paperheight=6in,
includefoot}}{%
\relax}
\ifdefstring{\ELEGANT@device}{kindle}{%
\geometry{
margin=8mm,
paperwidth=3.68in,
paperheight=4.92in}}{%
\relax}
\ifdefstring{\ELEGANT@device}{normal}{%
\geometry{
margin=1in,
a4paper}}{%
\relax}
\ifdefstring{\ELEGANT@device}{screen}{%
\geometry{
screen,
paperwidth=25.4cm,
paperheight=19.05cm,
margin=1.6cm,
headheight=2.17cm,
footskip=0.6cm}}{%
\relax}
% headings
\RequirePackage{fancyhdr}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancypagestyle{fancy-note}{
\fancyhf{} % clear header/footer settings
\fancyfoot[C]{\footnotesize\textcolor{gray}{\thepage}}
}
\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[R]{\footnotesize\textcolor{gray}{\thepage}}}
\pagestyle{fancy-note}
\def\bibfont{\footnotesize}
\def\IfEmpty#1{%
\edef\1{\the#1}
\ifx\1\empty}
\newtoks\version
\newtoks\institute
\def \ifempty#1{
\def\temp{#1}
\ifx\temp\empty}
\renewcommand\maketitle{\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@xt@1.8em{%
\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{empty}\@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{%
\color{ecolor}
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks{%
\LARGE\bfseries \@title \par}%
\vskip 1.5em {%
\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\\
\begin{tabular}[t]{c}%
\the\institute
\end{tabular}\par}%
\IfEmpty\version
\else
{\normalfont\citshape\versiontext\the\version \\}
\fi
\ifx\@date\empty
\else
{\normalfont\citshape\updatetext\@date}%
\fi
\end{center}%
\par}
\RequirePackage{tikz}
\usetikzlibrary{shadows}
\newcommand*{\eitemi}{
\tikz\draw[baseline, ball color=ecolor, draw=none] circle (2pt);}
\newcommand*{\eitemii}{
\tikz\draw[baseline, fill=ecolor,draw=none,circular drop shadow] circle (2pt);}
\newcommand*{\eitemiii}{%
\tikz\draw[baseline,fill=ecolor,draw=none] circle (2pt);}
\setlist[enumerate,1]{label=\color{ecolor}\arabic*.}
\setlist[enumerate,2]{label=\color{ecolor}(\alph*).}
\setlist[enumerate,3]{label=\color{ecolor}\Roman*.}
\setlist[enumerate,4]{label=\color{ecolor}\Alph*.}
\setlist[itemize,1]{label={\eitemi}}
\setlist[itemize,2]{label={\eitemii}}
\setlist[itemize,3]{label={\eitemiii}}
% source1: https://tex.stackexchange.com/questions/41408/a-five-level-deep-list
% source2: https://tex.stackexchange.com/questions/318199/change-color-of-itemize-bullet
\RequirePackage{listings,lstautogobble}
\renewcommand{\ttdefault}{cmtt}
\lstdefinestyle{estyle}{
basicstyle=%
\ttfamily
\lst@ifdisplaystyle\small\fi}
% \lstset{
% basicstyle=\scriptsize\ttfamily,
% style=estyle}
\definecolor{lightgrey}{rgb}{0.9,0.9,0.9}
\definecolor{frenchplum}{RGB}{190,20,83}
\lstset{language=[LaTeX]TeX,
style=estyle,
autogobble=true,
texcsstyle=*\color{winered},
numbers=none,
breaklines=true,
keywordstyle=\color{winered},
commentstyle=\color{gray},
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,
device,
color,
mode,
chinesefont,
cite,
bibstyle,
math,
lang,
amsthm},
emphstyle={\color{frenchplum}},
morekeywords={%
DeclareSymbolFont,
setCJKfamilyfont,
SetSymbolFont,
toprule,
midrule,
bottomrule,
institute,
version,
includegraphics,
setmainfont,
setsansfont,
setmonofont ,
setCJKmainfont,
setCJKsansfont,
setCJKmonofont,
RequirePackage,
figref,
pagecolor,
definecolor,
tabref,
email,
maketitle,
keywords},
frame=none,
tabsize=2}
\addbibresource[location=local]{reference.bib}
% restore the tt default family to lmodern tt family
\renewcommand\ttdefault{lmtt}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/oimath/ElegantNote.git
git@gitee.com:oimath/ElegantNote.git
oimath
ElegantNote
ElegantNote
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385