Files
latex/tmr-tex.cls
wangjinlei cc8d175fc1 1
2026-02-12 11:52:24 +08:00

1780 lines
49 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tmr-tex}
[2025/11/27 v1.0 Submission to TMR journals]
\LoadClass[10pt,a4paper,twoside]{article}
\RequirePackage{xkeyval}
\RequirePackage{geometry}
\RequirePackage{changepage}
\RequirePackage{stringstrings}
\RequirePackage[absolute]{textpos}
\RequirePackage[table,svgnames]{xcolor}
\RequirePackage{tabularray}
\usepackage[none]{hyphenat}%强制不能出现断词
\sloppy%启用宽松间距排版
\RequirePackage{
caption,
floatrow,
graphicx,
url,
mdframed,
mfirstuc,
% footmisc,
alphalph
}
\urlstyle{same}
\ifcase\@ptsize % 根据基础字号(\@ptsize=0→10pt, 1→11pt, 2→12pt
% 10pt 基准
\renewcommand{\tiny}{\fontsize{5}{6}\selectfont}
\renewcommand{\scriptsize}{\fontsize{7}{8}\selectfont}
\renewcommand{\footnotesize}{\fontsize{8}{9.5}\selectfont}
\renewcommand{\small}{\fontsize{9}{10.5}\selectfont}
%\renewcommand{\normalsize}{\fontsize{10}{11}\selectfont}
\renewcommand{\normalsize}{\fontsize{8}{9.5}\selectfont}
\renewcommand{\large}{\fontsize{12}{14}\selectfont}
%\renewcommand{\Large}{\fontsize{14}{16}\selectfont}
\renewcommand{\LARGE}{\fontsize{17}{20}\selectfont}
\renewcommand{\huge}{\fontsize{20}{23}\selectfont}
\renewcommand{\Huge}{\fontsize{25}{28}\selectfont}
\newcommand{\xiaoliu}{\fontsize{9}{11}\selectfont}
\AtBeginDocument{\bodyfont}
\definecolor{contentblue}{RGB}{0, 130, 170}
\newcommand*\contentBlue[1]{%
\textcolor{contentblue}{#1}%
}
\or
%% 11pt 基准(按需添加)
%\renewcommand{\normalsize}{\fontsize{11}{13}\selectfont}
%\or
%% 12pt 基准(按需添加)
%\renewcommand{\normalsize}{\fontsize{12}{14}\selectfont}
\fi
%%自定义方法
\newcommand*\cup@warning{\ClassWarning{tmr-tex}}
\newcommand*\cup@ifundefined[1]{%
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname #1\endcsname\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\newcommand*\cup@keyval@bool[2]{%
\cup@ifundefined{cup@#1#2}{%
\cup@warning{Unknown option `#2' for key #1}%
}{%
\@nameuse{cup@#1#2}%
}%
}
%%定义变量
\newif\ifcup@abbreviations
\newif\ifcup@jel
\newif\ifcup@msc
\newif\ifcup@dates
\newif\ifcup@articletitle
\newif\ifcup@chaptertitle
\newif\ifcup@email
\newif\ifcup@hyperref
\newif\ifcup@super
\newif\ifcup@simfonts
\define@key{cup}{abbreviations}[true]{%
\cup@keyval@bool{abbreviations}{#1}%
}
\define@key{cup}{jel}[true]{%
\cup@keyval@bool{jel}{#1}%
}
\define@key{cup}{msc}[true]{%
\cup@keyval@bool{msc}{#1}%
}
\define@key{cup}{suppmat}[true]{%
\cup@keyval@bool{suppmat}{#1}%
}
\define@key{cup}{suppdata}[true]{%
\cup@keyval@bool{suppdata}{#1}%
}
\define@key{cup}{orcid}[true]{%
\cup@keyval@bool{orcid}{#1}%
}
\define@key{cup}{ack}[true]{%
\cup@keyval@bool{ack}{#1}%
}
\define@key{cup}{contrib}[true]{%
\cup@keyval@bool{contrib}{#1}%
}
\define@key{cup}{financial}[true]{%
\cup@keyval@bool{financial}{#1}%
}
\define@key{cup}{conflicts}[true]{%
\cup@keyval@bool{conflicts}{#1}%
}
\define@key{cup}{ethics}[true]{%
\cup@keyval@bool{ethics}{#1}%
}
\define@key{cup}{dates}[true]{%
\cup@keyval@bool{dates}{#1}%
}
\define@key{cup}{articletitle}[true]{%
\cup@keyval@bool{articletitle}{#1}%
}
\define@key{cup}{chaptertitle}[true]{%
\cup@keyval@bool{chaptertitle}{#1}%
}
\define@key{cup}{email}[true]{%
\cup@keyval@bool{email}{#1}%
}
\define@key{cup}{hyperref}[true]{%
\cup@keyval@bool{hyperref}{#1}%
}
\define@key{cup}{super}[true]{%
\cup@keyval@bool{super}{#1}%
}
\define@key{cup}{usetitle}[true]{%
\cup@keyval@bool{articletitle}{#1}%
}
\define@key{cup}{simfonts}[true]{%
\cup@keyval@bool{simfonts}{#1}%
}
\newcommand*\cup@journal{Traditional Medicine Research}
\newcommand*\cup@doi{\cup@warning{No DOI provided}}
\newcommand*\cup@layout{largetwo}
\newcommand*\cup@manuscript{article}
\newcommand*\cup@year{\cup@warning{No year provided}}
\newcommand*\cup@vol{\cup@warning{No volume provided}}
\newcommand*\cup@maxauthors{15}
\newcommand*\cup@articletype{ARTICLE}
\newcommand*\cup@journalweb{\cup@warning{No journal website}}
\newcommand*\cup@authorcon{\cup@warning{No Author contributions}}
\newcommand*\cup@competing{\cup@warning{No Competing interests}}
\newcommand*\cup@Acknowledgments{\cup@warning{No Acknowledgments}}
\newcommand*\cup@Peerreviewinformation{\cup@warning{no Peer review information}}
\newcommand*\cup@Abbreviations{\cup@warning{no Abbreviations}}
\newcommand*\cup@Citation{\cup@warning{no Citation}}
\newcommand*\cup@keywords{\cup@warning{no keywords}}
\newcommand*\cup@Executiveeditor{\cup@warning{no Executive editor}}
\newcommand*\cup@EditorialAdvisoryBoard{\cup@warning{no Editorial Advisory Board}}
\newcommand*\cup@Correspondence{\cup@warning{no Correspondence}}
%\newcommand*\cup@no{\cup@warning{no journal number}}
\newcommand*\cup@no{}%
\newcommand*\cup@revd{}%
\newcommand*\cup@page{\cup@warning{no article page}}
\newcommand*\cup@journalname{\cup@warning{no jorunal name}}
\newcommand*\cup@copyright{© \cup@year By Author(s). Published by TMR Publishing Group Limited. This is an open access article under the CC-BY license. (https://creativecommons.org/licenses/by/4.0/)}
\define@key{cup}{journal}{%
\def\cup@journal{#1}%
}
\define@key{cup}{layout}{%
\def\cup@layout{#1}%
}
\define@key{cup}{journalname}{%
\def\cup@journalname{#1}%
}
\define@key{cup}{no}{%
\def\cup@no{#1}%
}
\define@key{cup}{page}{%
\def\cup@page{#1}%
}
\define@key{cup}{manuscript}{%
\AtBeginDocument{\def\cup@manuscript{#1}}%
}
\define@key{cup}{EditorialAdvisoryBoard}{%
\def\cup@EditorialAdvisoryBoard{#1}%
}
\define@key{cup}{year}{%
\def\cup@year{#1}%
}
\define@key{cup}{volume}{%
\def\cup@vol{#1}%
}
\define@key{cup}{articletype}{%
\def\cup@articletype{#1}%
}
\define@key{cup}{journalweb}{
\def\cup@journalweb{#1}
}
\define@key{cup}{authorcon}{
\def\cup@authorcon{#1}
}
\define@key{cup}{competing}{
\def\cup@competing{#1}
}
\define@key{cup}{Acknowledgments}{
\def\cup@Acknowledgments{#1}
}
\define@key{cup}{Peerreviewinformation}{
\def\cup@Peerreviewinformation{#1}
}
\define@key{cup}{Abbreviations}{
\def\cup@Abbreviations{#1}
}
\define@key{cup}{Citation}{
\def\cup@Citation{#1}
}
\define@key{cup}{Executiveeditor}{
\def\cup@Executiveeditor{#1}
}
\define@key{cup}{copyright}{
\def\cup@copyright{#1}
}
\define@key{cup}{keywords}{
\def\cup@keywords{#1}
}
\define@key{cup}{Correspondence}{
\def\cup@Correspondence{#1}
}
\ProcessOptionsX*<cup>
\let\@unusedoptionlist\@empty
\newcommand*\cup@manuscript@communication{communication}
\newcommand*\cup@manuscript@letter{letter}
\newcommand*\cup@manuscript@note{note}
\newcommand*\cup@manuscript@review{review}
\newcommand*\cup@manuscript@suppinfo{suppinfo}
\setkeys{cup}{
articletitle,
super,
% dates,
% copyright,
abbreviations,
jel,
msc,
simfonts
}
%定义变量并暂存
\newcommand*\doi[1]{\gdef\cup@doi{#1}}
\@onlypreamble\doi
\newcommand*\received[1] {\gdef\cup@recvd{#1}}
\newcommand*\revised[1] {\gdef\cup@revd{#1}}
\newcommand*\accepted[1] {\gdef\cup@accptd{#1}}
\newcommand*\Availableonline[1]{\gdef\cup@Availableonline{#1}}
\newcommand*\published[1]{\gdef\cup@publd{#1}}
\newcommand*\articletype[1]{\gdef\cup@articletype{#1}}
\newcommand*\journalweb[1]{\gdef\cup@journalweb{#1}}
\newcommand*\authorcontributions[1]{\gdef\cup@authorcon{#1}}
\newcommand*\competinginterests[1]{\gdef\cup@competing{#1}}
\newcommand*\Acknowledgments[1]{\gdef\cup@Acknowledgments{#1}}
\newcommand*\Peerreviewinformation[1]{\gdef\cup@Peerreviewinformation{#1}}
\newcommand*\Abbreviations[1]{\gdef\cup@Abbreviations{#1}}
\newcommand*\Citation[1]{\gdef\cup@Citation{#1}}
\newcommand*\Executiveeditor[1]{\gdef\cup@Executiveeditor{#1}}
\newcommand*\EditorialAdvisoryBoard[1]{\gdef\cup@EditorialAdvisoryBoard{#1}}
\newcommand*\tmrabstract[1]{\gdef\cup@tmrabstract{#1}}
\newcommand*\keywords[1]{\gdef\cup@keywords{#1}}
\newcommand*\KeywordImage[1]{\gdef\cup@KeywordImage{#1}}
\newcommand*\Correspondence[1]{\gdef\cup@Correspondence{#1}}
% 设置字体sourcesanspro这是一套全局字体样式的组合
\RequirePackage{fontspec}
\newcommand{\simfonts}{%
% \newfontface\bodyfont{Charis SIL}[Contextuals={WordInitial,WordFinal}]
\newfontfamily\bodyfont{Charis SIL}[
BoldFont={Charis SIL Bold}, % 显式指定加粗字体Windows 系统默认名称)
ItalicFont={Charis SIL Italic},% 可选:指定斜体字体
BoldItalicFont={Charis SIL Bold Italic} % 可选:指定加粗斜体字体
]
\newfontfamily\showfont{Calibri}[
BoldFont={Calibri Bold}, % 显式指定加粗字体Windows 系统默认名称)
ItalicFont={Calibri Italic},% 可选:指定斜体字体
BoldItalicFont={Calibri Bold Italic} % 可选:指定加粗斜体字体
]
\RequirePackage{sansmath}
\RequirePackage[italic,eulergreek]{mathastext}
\RequirePackage{unicode-math}
\setmathfont{Latin Modern Math}
}
\newlength\cup@space@pre@title
\setlength\cup@space@pre@title{1em}
\newlength\cup@space@post@title
\setlength\cup@space@post@title{1em}
\newlength\cup@space@post@author
\setlength\cup@space@post@author{0.5em}
\newlength\cup@space@post@address
\setlength\cup@space@post@address{0pt}
\newlength\cup@space@post@email
\setlength\cup@space@post@email{1.5em}
\newlength\cup@space@post@date
\setlength\cup@space@post@date{0.5em}
\newlength\cup@space@inter@extra
\setlength\cup@space@inter@extra{0.5em}
\newlength\cup@space@left@content
\setlength\cup@space@left@content{0.6em}
\newlength\cup@space@left@title
\setlength\cup@space@left@title{0.1em}
\newlength\cup@maketitle@width
\setlength\cup@maketitle@width{\textwidth}
\newcommand*\affilsize{\footnotesize}
\newcommand*\authorsize{\normalsize}
\newcommand*\emailsize{\footnotesize}
\newcommand*\datesize{\footnotesize}
\newcommand*\firstheadsize{\scriptsize}
\newcommand*\affilfont{\bodyfont}
\newcommand*\authorfont{\bodyfont\bfseries}
\newcommand*\emailfont{\footnotesize}
\newcommand*\emailsymbol{*}
%\newcommand*\emailme{#}
\newcommand*\firstsymbol{\#}
\newcommand*\titlesize{\Large}
\newcommand*\titlefont{\sffamily\bfseries\color{structure@color}}
\newcommand*\datefont{\footnotesize}
\newcommand*\extrasfont{\footnotesize}
\newcommand*\abstractfont{\small}
\newcommand*\journalnamefont{\itshape}
\newcommand*\volumefont{\bfseries}
\newcommand*\cup@etal{\emph{et al.}}
%%设置首页内容
\usepackage{ragged2e}
\RequirePackage{lastpage}
\def\@maketitle{%
\setlength\parindent{\z@}
\ifnum\cup@author@cnt<\z@\relax
\cup@warning{No authors defined: At least one author is required}%
\fi
\newpage
\vspace*{\dimexpr-\headsep-\headheight + 6pt\relax}
\includegraphics[width=18mm]{../tmr-logo.pdf}% 你的Logo路径
\hfill
\parbox[b]{150mm}{%
\raggedleft
{\showfont\large\textbf{\color[HTML]{002060} \cup@articletype}}\par
\vspace{0.8pt}
{\bodyfont\footnotesize{\itshape\textbf{\cup@journal@name}}\ \cup@year;\cup@vol\ifx\cup@no\empty\else(\cup@no)\fi:\cup@page.\ https://doi.org/\cup@doi}\par
}\par
\vspace*{1.5em}
{%输出的标题部分
\titlefont
\showfont
\titlesize
\let\@fnsymbol\cup@author@fnsymbol
\let\footnote@org\footnote
\let\footnote\cup@title@footnote
\cup@maketitle@suppinfo \@title
\cup@title@footnote@check
\global\cup@footnote@cnt\c@footnote
\@maketitle@title@hook
\par
}
\vspace*{1.5em}%
{%作者信息部分
\xiaoliu
\showfont
\frenchspacing
\cup@author@list
\par
}%
\vspace*{1.5em}%
{%作者机构信息显示
\xiaoliu
\showfont
\cup@address@list
\par
}%
\vspace*{1.5em}%
{%
\xiaoliu
\showfont
\cup@author@firstOverTwo
\par
}%
{%
\xiaoliu
\showfont
\textsuperscript{\color[HTML]{057cca}*}{\textbf{Correspondence to: }}\cup@Correspondence\par
}%
\vspace*{1.5em}
{%
\footnotesize
\bodyfont
\raggedright
\begin{minipage}[t]{0.48\textwidth}
\showfont
%Author contributions
{\itshape\textbf{Author contributions}}\par
\cup@authorcon\par
%Competing interests
{\itshape\textbf{Competing interests}}\par
\cup@competing\par
%Acknowledgments
{\itshape\textbf{Acknowledgments}}\par
\cup@Acknowledgments\par
%Abbreviations
{\itshape\textbf{Abbreviations}}\par
\cup@Abbreviations\par
%Citation
{\itshape\textbf{Citation}}\par
\contentBlue{\cup@Citation}\par
\vspace{1em}
%Peer review information
{\itshape\textbf{Peer review information}}\par
\cup@Peerreviewinformation\par
%Executive editor-----copyright
{\textbf{Editorial Advisory Board:}}\ \cup@EditorialAdvisoryBoard \par
{\textbf{Executive editor:}}\ \cup@Executiveeditor.\par
{\textbf{Received:}}\ \cup@recvd ; {\ifx\cup@revd\empty\else{\textbf{Revised:}}\ \cup@revd ; \fi}{\textbf{Accepted:}}\ \cup@accptd ; {\textbf{Available online:}}\ \cup@Availableonline \par
\cup@copyright
\end{minipage}
\hfill
\begin{minipage}[t]{0.5\textwidth}
{\xiaoliu\itshape\textbf{Abstract}}\par
\vspace{\cup@space@left@title}
\cup@tmrabstract\par
\vspace{1em}
{\textbf{Keywords:}}\ \cup@keywords
\ifx\cup@KeywordImage\empty
\else
\vspace{1em}
% 插入图片:宽度适配 minipage0.6\textwidth高度自动按比例缩放
\includegraphics[
width=\linewidth, % 图片宽度=minipage宽度避免超出
% height=auto, % 高度自动适配,保持比例
keepaspectratio % 强制保持宽高比(防止拉伸变形)
]{\cup@KeywordImage}
\fi
\end{minipage}
}%
\vfill
{%
\sffamily
{\footnotesize\fontspec{Charis SIL}\color[HTML]{002060} {Submit a manuscript:\ \cup@journalweb} }
\hfill
\thepage
}%
}
\newcommand*\@maketitle@title@hook{}
\newcommand*\cup@maketitle@suppinfo{%
\ifx\cup@manuscript\cup@manuscript@suppinfo
Supporting Information:\\
\fi
}
\newcommand*\cup@title@footnote[1]{%
\footnotemark
\g@addto@macro\@thanks{\footnotetext{#1}}%
}
\newcommand\cup@title@footnote@check{%
\ifx\@thanks\@empty
\else
\begingroup
\toks@=\expandafter{\@thanks}%
\xdef\@thanks{%
\begingroup
\let\noexpand\@fnsymbol\noexpand\cup@author@fnsymbol
\the\toks@
\endgroup
}%
\endgroup
\fi
}
%\newcommand*\cup@contact@details{%
% { \emailsymbol{}Corresponding author. Email: \cup@email@list}%
% \cup@number@list
%}
%\let\@thanks\@empty
%\renewcommand*{\title}[2][]{%
% \gdef\cup@title@short{#1}%
% \gdef\@title{#2}%
% \ifx\cup@title@short\@empty
% \global\let\cup@title@short\@title
% \fi
%}
%\@onlypreamble\title
%%作者相关
%定义作者相关
\newcount\cup@author@cnt%作者数量
\newcount\cup@affil@cnt%作者机构数量
\newcount\cup@affil@alt@cnt
\newcount\cup@footnote@cnt%偏移量,很奇妙的东西貌似这里没有实际生效
\newcount\cup@affil@marker@cnt%
\newcount\cup@first@cnt%第一作者的数量
\def\author#1{%定义方法
\global\advance\cup@author@cnt\@ne\relax%作者数自加1
\expandafter\gdef\csname @author@\@roman\cup@author@cnt\endcsname{#1}
\begingroup
\advance\cup@affil@cnt\@ne
\expandafter\xdef\csname @author@affil@\@roman\cup@author@cnt\endcsname{\the\cup@affil@cnt}%
\endgroup
}
\@onlypreamble\author%只在导言区生效,这段结束后 @author@1 是作者的名字 @author@affil@1 是第一个机构的编号比如1
\newcommand*\affiliation[2][\relax]{%两个参数
\ifnum\cup@author@cnt>\z@\relax%如果作者数小于0那么就报错
\cup@affil@ifdup{#2}{%检查机构是否已存在
\cup@affil@swap{#2}%
}{%如果不存在执行这些
\global\advance\cup@affil@cnt\@ne\relax
\expandafter\gdef\csname @address@\@roman\cup@affil@cnt\endcsname%address@1存进去实际的作者单位
{#2}%
\ifx\relax#1\relax
\expandafter\gdef\csname @affil@\@roman\cup@affil@cnt\endcsname{#2}%如果第一个参数为空,就把机构全称存到@affil@1 中
\else
\expandafter\gdef\csname @affil@\@roman\cup@affil@cnt\endcsname{#1}%如果第一个参数不为空,就把第一个参数即简称存到 @affil@1中
\fi
}%
\else
\cup@warning{Affiliation with no author}%
\fi
}
\@onlypreamble\affiliation
\newcommand*\cup@affil@ifdup[1]{%判断某个作者单位是否已存在address@数组中 如果存在执行第一个{}如果没有执行第二个{}
\begingroup
\def\@tempa{#1}%
\@tempswafalse%设置tempswa的值是false
\@tempcnta\z@\relax%设置tempcnta的值是0
\cup@affil@ifdup@aux
\if@tempswa
\aftergroup\@firstoftwo
\else
\aftergroup\@secondoftwo
\fi
\endgroup
}
\newcommand*\cup@affil@ifdup@aux{%判断是否存在的核心方法
\advance\@tempcnta\@ne\relax
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\@tempb\expandafter\expandafter\expandafter{\csname @address@\@roman\@tempcnta\endcsname}%
\ifx\@tempa\@tempb
\expandafter\@tempswatrue
\else
\ifnum\@tempcnta<\cup@affil@cnt\relax%如果目前判断的这个aff还不是最后一个那就需要继续遍历下一个
\expandafter\expandafter\expandafter\cup@affil@ifdup@aux
\fi
\fi
}
\newcommand*\cup@affil@swap[1]{%如果已经存在了,那执行这个
\begingroup
\def\@tempa{#1}%
\@tempcnta\z@\relax
\@tempcntb\z@\relax
\cup@affil@ifdup@aux
\advance\cup@affil@cnt\@ne\relax
\cup@affil@swap@aux
\endgroup
}
\newcommand*\cup@affil@swap@aux{%让用户的单位指向,指向这个单位
\advance\@tempcntb\@ne\relax
\expandafter\ifnum\csname @author@affil@\@roman\@tempcntb\endcsname
= \cup@affil@cnt\relax
\expandafter\xdef\csname @author@affil@\@roman\@tempcntb\endcsname{%
\the\@tempcnta
}%
\fi
\ifnum\@tempcntb<\cup@author@cnt\relax
\expandafter\cup@affil@swap@aux
\fi
}
\newcommand*\alsoaffiliation[2][\relax]{%第二个单位
\ifnum\cup@author@cnt>\z@\relax%cup@author@cnt这个是当前的作者的数字号
\cup@affil@ifdup{#2}{%是否存在这个单位了
\cup@alsoaffil@find{#2}%如果存在的话
}{%
\global\advance\cup@affil@cnt\@ne\relax
\@tempcnta\cup@affil@cnt\relax
\expandafter\gdef\csname @address@\@roman\cup@affil@cnt\endcsname
{#2}%
\ifx\relax#1\relax
\expandafter\gdef\csname @affil@\@roman\cup@affil@cnt\endcsname
{#2}%
\else
\expandafter\gdef\csname @affil@\@roman\cup@affil@cnt\endcsname
{#1}%
\fi
}%
\@ifundefined{@author@alsoaffil@\@roman\cup@author@cnt}{%
\expandafter\xdef\csname @author@alsoaffil@\@roman\cup@author@cnt
\endcsname{\the\@tempcnta}%
}{%
\expandafter\xdef\csname @author@alsoaffil@\@roman\cup@author@cnt
\endcsname{%
\csname @author@alsoaffil@\@roman\cup@author@cnt\endcsname
,\the\@tempcnta
}%
}%
\else
\cup@warning{Affiliation with no author}%
\fi
}
%%定义第一作者
\newcommand*\firstauthor[1][\relax]{%
\global\advance\cup@first@cnt\@ne\relax
\ifnum\cup@author@cnt>\z@\relax
\expandafter\gdef\csname @firstauthor@\@roman\cup@author@cnt\endcsname
{#1}%
\else
\cup@warning{first author with no author}%
\fi
}
\@onlypreamble\firstauthor
\newcommand*\orcid[1]{%
\ifnum\cup@author@cnt>\z@\relax
\expandafter\gdef\csname @orcid@\@roman\cup@author@cnt\endcsname
{#1}%
\else
\cup@warning{orcid with no author}%
\fi%
}%
\@onlypreamble\orcid
\newcommand*\cup@alsoaffil@find[1]{%
\begingroup
\def\@tempa{#1}%定义@tempa是单位具体内容
\@tempcnta\z@\relax%定义a是0
\@tempcntb\z@\relax%定义b是0
\cup@affil@ifdup@aux
\expandafter\endgroup
\expandafter\@tempcnta\the\@tempcnta\relax
}
\newcommand*\altaffiliation[1]{%
\ifnum\cup@author@cnt>\z@\relax
\begingroup
\cup@altaffil@ifdup{#1}{%
\expandafter\xdef\csname @author@altaffil@\\cup@author@cnt
\endcsname{\the\@tempcnta}%
}{%
\global\advance\cup@affil@alt@cnt\@ne\relax
\expandafter\gdef\csname @altaffil@\\cup@affil@alt@cnt
\endcsname{#1}%
\expandafter\xdef\csname @author@altaffil@\@roman\cup@author@cnt
\endcsname{\the\cup@affil@alt@cnt}%
}%
\endgroup
\else
\cup@warning{Affiliation with no author}%
\fi
}
\@onlypreamble\altaffiliation
\newcommand*\cup@altaffil@ifdup[1]{%
\def\@tempa{#1}%
\@tempswafalse
\@tempcnta\z@\relax
\ifnum\cup@affil@alt@cnt>\z@\relax
\expandafter\cup@altaffil@ifdup@aux
\fi
\if@tempswa
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\newcommand*\cup@altaffil@ifdup@aux{%
\advance\@tempcnta\@ne\relax
\expandafter\expandafter\expandafter\def\expandafter\expandafter
\expandafter\@tempb\expandafter\expandafter\expandafter
{\csname @altaffil@\@roman\@tempcnta\endcsname}%
\ifx\@tempa\@tempb
\expandafter\@tempswatrue
\else
\ifnum\@tempcnta<\cup@affil@alt@cnt\relax
\expandafter\expandafter\expandafter\cup@altaffil@ifdup@aux
\fi
\fi
}
\newcommand*\email[2][]{%
\ifnum\cup@author@cnt>\z@\relax
\cup@emailtrue%
\expandafter\gdef\csname @emailname@\@roman\cup@author@cnt\endcsname
{#1}%
\expandafter\gdef\csname @email@\@roman\cup@author@cnt\endcsname
{#2}%
\else
\cup@warning{E-mail with no author}%
\fi
}
\@onlypreamble\email
\newcommand*\fax[1]{%
\ifnum\cup@author@cnt>\z@\relax
\expandafter\gdef\csname @fax@\@roman\cup@author@cnt\endcsname
{#1}%
\else
\cup@warning{Fax number with no author}%
\fi
}
\@onlypreamble\fax
\newcommand*\phone[1]{%
\ifnum\cup@author@cnt>\z@\relax
\expandafter\gdef\csname @phone@\@roman\cup@author@cnt\endcsname
{#1}%
\else
\cup@warning{Phone number with no author}%
\fi
}
\@onlypreamble\phone
\newcommand*\abbreviations[1]{%
\gdef\@abbreviations{#1}%
}
\newcommand*\@abbreviations{}
\@onlypreamble\abbreviations
%\newcommand*\keywords[1]{%
% \gdef\@keywords{#1}%
%}
%\newcommand*\@keywords{}
%\@onlypreamble\keywords
\newcommand*\cup@abbreviations@print{%
\ifx\@abbreviations\@empty\else
{\noindent\bfseries Abbreviations: }
\@abbreviations
\par
\fi
}
\newcommand*\jel[1]{%
\gdef\@jel{#1}%
}
\newcommand*\@jel{}
\@onlypreamble\jel
\newcommand*\cup@jel@print{%
\ifx\@jel\@empty\else
{\noindent\bfseries JEL classification: }
\@jel
\par
\fi
}
\newcommand*\msc[1]{%
\gdef\@msc{#1}%
}
\newcommand*\@msc{}
\@onlypreamble\msc
\newcommand*\cup@msc@print{%
\ifx\@msc\@empty\else
{\noindent\bfseries MSC Codes: }
\@msc
\par
\fi
}
\newcommand*\cup@author@list{%
\@tempcnta\z@\relax%从0开始遍历作者
\ifnum\cup@author@cnt=\z@\relax\else
\expandafter\cup@author@list@main
\fi
}
\newcommand*\cup@author@footnotes{}
\newcommand*\cup@author@list@main{%
\advance\@tempcnta\@ne\relax
\def\cup@author@footnotes{}%清空上一个的标记
\cup@author@list@mycomma%作者和作者之间要加逗号
\space%空格
\@nameuse{@author@\@roman\@tempcnta}%显示姓名
\cup@author@affil
\cup@author@affil@also
\cup@author@firstauthor
\cup@author@star
\ifx\@empty\cup@author@footnotes\else
\textsuperscript{\color[HTML]{057cca}\cup@author@footnotes}%实际的显示
\fi
%%解决orcid
\cup@author@orcid
\ifnum\@tempcnta<\cup@author@cnt\relax
\expandafter\cup@author@list@main
\fi
}
\newcommand*\cup@author@list@and{%最后一个作者增加and字符串
\ifnum\cup@author@cnt=\@ne\relax\else
\ifnum\@tempcnta=\cup@author@cnt\relax
\space and%
\fi
\fi
}
\newcommand*\cup@author@list@comma{%
\ifnum\cup@author@cnt>\tw@\relax
\ifnum\@tempcnta<\cup@author@cnt\relax
,%
\fi
\fi
}
\newcommand*\cup@author@list@mycomma{%
\ifnum\@tempcnta>1\relax
\ifnum\@tempcnta>\cup@author@cnt\relax
\else
,
\fi
\fi
}
\newcommand*\cup@author@star{%如果定义了@email@roman那么就要给footnotes加上型号标识
\cup@ifundefined{@email@\@roman\@tempcnta}{}{%
\cup@author@star@aux
}%
}
\newcommand*\cup@author@star@aux{%
\protected@edef\cup@author@footnotes{%
\cup@author@footnotes
% \cup@author@fnsymbol{\z@}%
\emailsymbol%
% \ifnum\cup@affil@cnt>\@ne\relax
% ,
% \else
% \ifnum\cup@affil@alt@cnt>\z@\relax
% ,
% \fi
% \fi
}%
}
\RequirePackage[hidelinks]{hyperref}
% 1. 定义引用自定义颜色
\definecolor{refColor}{RGB}{0, 130, 170} % 自定义RGB值
% 2. 配置hyperref移除hidelinks添加颜色
%\RequirePackage[colorlinks=true, linkcolor=refColor]{hyperref}
% 3. 重定义\ref/\autoref确保颜色生效
\let\originalRef\ref
\renewcommand{\ref}[1]{\textcolor{refColor}{\originalRef{#1}}}
\let\originalAutoref\autoref
\renewcommand{\autoref}[1]{\textcolor{refColor}{\originalAutoref{#1}}}
\newcommand*\cup@author@orcid{%
\cup@ifundefined{@orcid@\@roman\@tempcnta}{}{%
\href{https://orcid.org/\csname @orcid@\@roman\@tempcnta\endcsname}{%
\includegraphics[height=0.8em]{../orcid_icon.png}% 确保orcid_icon.png在路径中
}
}%
}
\newcommand*\cup@author@firstOverTwo{
\ifnum\cup@first@cnt>1\relax
\textsuperscript{\color[HTML]{057cca}\#}These authors contributed equally to this work and are co-first authors for this paper.
\fi
}
\newcommand*\cup@author@firstauthor{%
\cup@ifundefined{@firstauthor@\@roman\@tempcnta}{}{%
\cup@author@firstauthor@aux
}%
}
\newcommand*\cup@author@firstauthor@aux{%
\protected@edef\cup@author@footnotes{%
\cup@author@footnotes
\expandafter\firstsymbol\relax%
}%
}
\newcommand*\cup@author@affil{%
\cup@ifundefined{%
@affil@\@roman\csname @author@affil@\@roman\@tempcnta\endcsname
}{%没有找到这个机构则发出警告
\cup@warning{%
No affiliation given for author\MessageBreak
\@nameuse{@author@\@roman\@tempcnta}%
}%
}{%找到了就要执行后续操作
\cup@author@affil@aux
}%
}
\newcommand*\cup@author@affil@aux{%
\ifnum\cup@affil@cnt>\@ne\relax%机构总计数大于1
\expandafter\cup@affil@marker@cnt\csname @author@affil@\@roman\@tempcnta\endcsname\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\protected@edef\cup@author@footnotes{%
% \cup@author@footnotes
\cup@author@fnsymbol{\cup@affil@marker@cnt}%
}%
\else%机构总计数等于1
\ifnum\cup@affil@cnt>\z@\relax%这里做过修改原来是\ifnum\cup@affil@alt@cnt>\z@\relax
\cup@affil@marker@cnt\@ne\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\protected@edef\cup@author@footnotes{%
% \cup@author@footnotes
\cup@author@fnsymbol{\cup@affil@marker@cnt}%
}%
\fi
\fi
}
\newcommand*\cup@author@affil@also{%
\cup@ifundefined{@author@alsoaffil@\@roman\@tempcnta}{}{%
\cup@author@affil@also@aux
}%
}
\newcommand*\cup@author@affil@also@aux{%
\expandafter\@for\expandafter\@tempa\expandafter:\expandafter
=\csname @author@alsoaffil@\@roman\@tempcnta\endcsname\do{%
\cup@affil@marker@cnt\@tempa\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\protected@edef\cup@author@footnotes{%
\cup@author@footnotes
,
\cup@author@fnsymbol{\cup@affil@marker@cnt}%
}%
}%
}
\newcommand*\cup@author@affil@alt{%
\cup@ifundefined{@author@altaffil@\@roman\@tempcnta}{}{%
\cup@author@affil@alt@aux
}%
}
\newcommand*\cup@author@affil@alt@aux{%
\expandafter\cup@affil@marker@cnt
\csname @author@altaffil@\@roman\@tempcnta\endcsname\relax
\advance\cup@affil@marker@cnt\cup@affil@cnt\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\protected@edef\cup@author@footnotes{%
\cup@author@footnotes
%,%
\cup@author@fnsymbol{\cup@affil@marker@cnt}%
}%
}
\newcommand*{\cup@author@fnsymbol}[1]{%
\ensuremath{%
\expandafter\cup@author@fnsymbol@aux\expandafter{\number#1}%
}%
}
\newcommand*{\cup@author@fnsymbol@aux}[1]{%此方法被重写了,直接返回数字
\ifnum#1>10 %
\expandafter\cup@author@fnsymbol@loop
\else
\expandafter\cup@author@fnsymbol@symbol
\fi
{#1}%
}
\newcommand*{\cup@author@fnsymbol@loop}[1]{%
\cup@author@fnsymbol@loop@aux@i#1%
}
\newcommand*{\cup@author@fnsymbol@loop@aux@i}[2]{%
\cup@author@fnsymbol@symbol{\ifnum#2=0 10\else #2\fi}%
\expandafter\cup@author@fnsymbol@loop@aux@ii\romannumeral #1000Q{}%
{\cup@author@fnsymbol@symbol{\ifnum#2=0 10\else #2\fi}}%
}
\newcommand*{\cup@author@fnsymbol@loop@aux@ii}[1]{%
\@nameuse{cup@author@fnsymbol@loop@aux@#1}%
}
\def\cup@author@fnsymbol@loop@aux@m#1Q#2#3{%
\cup@author@fnsymbol@loop@aux@ii#1Q{#2#3}{#3}%
}
\newcommand*{\cup@author@fnsymbol@loop@aux@Q}[2]{#1}
\newcommand*{\cup@author@fnsymbol@symbol}[1]{%
\ifcase #1 *\or
\dagger\or
\ddagger\or
\P\or
\S\or
\|\or
\bot\or
\#\or
@\or
\triangle\or
\nabla
\fi
}
\newcommand*\cup@address@list{%
\ifnum\cup@affil@cnt>\z@
\expandafter\cup@address@list@auxi
\else
\cup@warning{No affiliations: at least one affiliation is needed}%
\fi
}
\newcommand*\cup@address@list@auxi{%
% \ifnum0%
% \ifnum\cup@affil@cnt>\@ne 1\fi
% \ifnum\cup@affil@alt@cnt>\z@ 1\fi
% >\z@
\expandafter\cup@address@list@auxii
% \else
% \@address@i\par
% \fi
}
\newcommand*\cup@address@list@auxii{%
\@tempcnta\z@
\cup@affil@marker@cnt\cup@footnote@cnt
\loop\ifnum\@tempcnta<\cup@affil@cnt
\advance\@tempcnta\@ne
\advance\cup@affil@marker@cnt\@ne
{\color[HTML]{057cca}\textsuperscript{\cup@author@fnsymbol{\cup@affil@marker@cnt}}}%
\@nameuse{@address@\@roman\@tempcnta}\par% and % TODO handle multiples
\repeat
\@tempcnta\z@
\loop\ifnum\@tempcnta<\cup@affil@cnt
\advance\@tempcnta\@ne
\advance\cup@affil@marker@cnt\@ne
\cup@ifundefined{@altaffil@\@roman\@tempcnta}
{}
{%
{\color[HTML]{057cca}\textsuperscript{\cup@author@fnsymbol{\cup@affil@marker@cnt}}}%
\@nameuse{@altaffil@\@roman\@tempcnta}\par
}%
\repeat
}
\newcommand*\cup@fnsymbol@org{}
\newcommand*\cup@affil@list{%
\let\cup@fnsymbol@org\@fnsymbol
\let\@fnsymbol\cup@author@fnsymbol
\@tempcnta\z@\relax
\@tempcntb\z@\relax
\ifnum\cup@affil@cnt>\@ne\relax
\expandafter\cup@affil@list@aux
\else
\ifnum\cup@affil@alt@cnt>\z@\relax
\cup@affil@marker@cnt\@ne\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\footnotetext[^\cup@affil@marker@cnt]{\@affil@i}%
\@tempcnta\@ne\relax
\fi
\fi
\ifnum\cup@affil@alt@cnt>\z@\relax
\expandafter\cup@affil@alt@list
\fi
\let\@fnsymbol\cup@fnsymbol@org
}
\newcommand*\cup@affil@list@aux{%
\advance\@tempcnta\@ne\relax
\cup@affil@marker@cnt\@tempcnta\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\footnotetext[\cup@affil@marker@cnt]{%
\@nameuse{@affil@\@roman\@tempcnta}%
}%
\ifnum\@tempcnta<\cup@affil@cnt\relax
\expandafter\cup@affil@list@aux
\fi
}
\newcommand*\cup@affil@alt@list{%
\advance\@tempcntb\@ne\relax
\cup@ifundefined{@altaffil@\@roman\@tempcntb}{}{%
\cup@altaffil@foot@aux
}
\ifnum\@tempcntb<\cup@author@cnt\relax
\expandafter\cup@affil@alt@list
\fi
}
\newcommand*\cup@altaffil@foot@aux{%
\advance\@tempcnta\@ne\relax
\cup@affil@marker@cnt\@tempcnta\relax
\advance\cup@affil@marker@cnt\cup@footnote@cnt\relax
\footnotetext[\cup@affil@marker@cnt]{%
\@nameuse{@altaffil@\@roman\@tempcntb}%
}%
}
\newcommand*\cup@email@list@font{}
\newcommand*\cup@email@list{%
\begingroup
\def\UrlFont{\cup@email@list@font}%
\@tempcnta\z@\relax
\@tempcntb\z@\relax
\cup@email@list@aux
\ifnum\@tempcntb=\z@\relax
\cup@warning{%
No e-mail given:\MessageBreak
at lest one author must have a contact e-mail%
}%
\fi
\endgroup
}
\newcommand*\cup@email@list@aux{%
\advance\@tempcnta\@ne\relax
\ifnum\@tempcnta>\cup@author@cnt\relax\else
\cup@ifundefined{@email@\@roman\@tempcnta}{}{%
\advance\@tempcntb\@ne\relax
\ifnum\@tempcntb>\@ne\relax
;
\fi
\expandafter\expandafter\expandafter\url\expandafter
\expandafter\expandafter{%
\csname @email@\@roman\@tempcnta\endcsname
}%
}%
\expandafter\cup@email@list@aux
\fi
}
\newcommand*\cup@number@list{%
\begingroup
\cup@number@list@aux@i{phone}%
\let\@tempb\@tempa
\cup@number@list@aux@i{fax}%
\ifx\@tempa\@empty
\let\@tempa\@tempb
\else
\ifx\@tempb\@empty\else
\protected@edef\@tempa{%
\@tempb.\space\@tempa
}%
\fi
\fi
\ifx\@tempa\@empty\else
\par
\@tempa
\fi
\endgroup
}
\newcommand*\cup@number@list@aux@i[1]{%
\def\@tempa{}%
\@tempcnta\z@\relax
\def\cup@number@list@aux@ii{%
\advance\@tempcnta\@ne\relax
\ifnum\@tempcnta>\cup@author@cnt\relax\else
\cup@ifundefined{@#1@\@roman\@tempcnta}{}{%
\cup@ifundefined{@email@\@roman\@tempcnta}{}{%
\ifx\@tempa\@empty
\edef\@tempa{%
\@nameuse{@#1@\@roman\@tempcnta}%
}%
\else
\edef\@tempa{%
\@tempa
;
\@nameuse{@#1@\@roman\@tempcnta}%
}%
\fi
}%
}%
\expandafter\cup@number@list@aux@ii
\fi
}%
\cup@number@list@aux@ii
\ifx\@tempa\@empty\else
\protected@edef\@tempa{%
\MakeUppercase#1: \@tempa
}%
\fi
}
\newcommand*\cup@number@list@aux@ii{}
%%处理作者标记的方式
\newcommand*\acksize{\normalsize}
\newcommand*\suppsize{\normalsize}
\newcommand*\patch@numeric@authors{%
\renewcommand{\cup@author@fnsymbol@aux}[1]{##1}
\pretocmd{\cup@author@fnsymbol}{\let\ensuremath\relax}{}{}
}
%%对maketitle的配置
\newcommand*\cup@maketitle@extras{%
\cup@maketitle@extras@hook
}
\newcommand*\cup@maketitle@extras@hook{}
\g@addto@macro{\maketitle}{\cup@maketitle@extras\thispagestyle{empty}}
\g@addto@macro{\document}{\maketitle}
%%正文内容
%设置全局图片和表格的字体等元素的样式
\captionsetup{
font={
footnotesize,
sf,
% sansmath
},
labelfont=bf,
labelsep=period
}
\floatsetup{
font={
sf,
% sansmath,
footnotesize
}
}
\definecolor{figerTitleColor}{RGB}{210,90,90}
\DeclareCaptionFormat{tmrcalibriCaption}{%
\bodyfont % 设置Calibri字体
\footnotesize % 字号+加粗
#1 #2#3 % 保留caption原有结构编号+内容)
}
\captionsetup[figure]{
format=tmrcalibriCaption,
labelfont={bf,color=figerTitleColor},
labelsep=space,
justification=raggedright,
}
\captionsetup[figure*]{
format=tmrcalibriCaption,
labelfont={bf,color=figerTitleColor},
labelsep=space,
justification=raggedright,
}
\colorlet{structure@color}{black}%设置一个全局颜色,并指定为黑色
%列表样式
\RequirePackage{enumitem} % For list styling
\setlist{noitemsep,leftmargin=\parindent}
%%表格注释的定义
\RequirePackage[online]{threeparttable}
\let\TPTnoteSettingsOrig\TPTnoteSettings
\def\TPTnoteSettings{\TPTnoteSettingsOrig\scriptsize}
\RequirePackage{endnotes}
\newcommand*{\printendnotes}{%
\def\enoteformat{\rightskip=0pt \leftskip=0pt \parindent=0pt \makeenmark}
\def\makeenmark{\bgroup\bfseries\theenmark\enspace\egroup}
\theendnotes
}
%浮动体的新定义
%\newfloat{scheme}{htbp}{los}
%\floatname{scheme}{Scheme}
%\newfloat{chart}{htbp}{loc}
%\floatname{chart}{Chart}
%\newfloat{graph}{htbp}{loh}
%\floatname{graph}{Graph}
%\newcommand*\schemename{Scheme}
%\newcommand*\chartname{Chart}
%\newcommand*\graphname{Graph}
%\floatplacement{table}{htbp}
%\floatplacement{figure}{htbp}
\floatstyle{plaintop}
\restylefloat{table}
%\let\cup@floatboxreset\@floatboxreset
%\def\@floatboxreset{%
% \centering
% \cup@floatboxreset
%}
\definecolor{tmrTableColorBase}{RGB}{250,231,232}
%%%表格设置
%\AtEndOfClass{%
% \colorlet{tbrowcolor}{structure@color!10}
% \colorlet{tbheadcolor}{structure@color!30}
% \colorlet{tmrTableColor}{tmrTableColorBase!60}
% \arrayrulecolor{structure@color}
%}
%%% From https://tex.stackexchange.com/a/32366/226
%\newcommand*{\trfiller}{%
% \arrayrulecolor{tbrowcolor}% change to cell colour
% \specialrule{\heavyrulewidth}{0pt}{-\heavyrulewidth}% "invisible" rule
% \arrayrulecolor{structure@color}% revert to regular line colour
%}
%\newcommand*{\thfiller}{%
% \arrayrulecolor{tmrTableColor}% change to cell colour
% \specialrule{\heavyrulewidth}{0pt}{-\heavyrulewidth}% "invisible" rule
% \arrayrulecolor{structure@color}% revert to regular line colour
%}
%\newcommand{\headrow}{\rowcolor{tmrTableColor}}
%\newcommand{\patchCUPtables}{%
% \rowcolors*{1}{}{tmrTableColor}%
% \setlength{\aboverulesep}{0pt}%
% \setlength{\belowrulesep}{0pt}%
% \setlength{\extrarowheight}{.75ex}%
%}
%\AtBeginEnvironment{table}{\patchCUPtables}
%\AtBeginEnvironment{table*}{\patchCUPtables}
% 先定义需要的颜色(如果未定义)
\definecolor{evenRowColor}{RGB}{250,231,232}
\newenvironment{tmrtable}[5]{%
\begin{table}[htb!]
\centering
\caption{#1}
\label{tab:#2}
\def\tablenote{#5}
\edef\tableroweven{\the\numexpr #4 + 1 \relax}
% 环境开始时执行的代码
\begin{tblr}{
% 优化列宽:调整比例,适配长文本自动换行
colspec={#3},
% 三线表样式
hline{1}={1.5pt},
hline{2}={0.75pt},
hline{Z}={1.5pt},
% 表头样式:背景为白色
row{#4}={font=\bfseries, bg=white},
% 偶数行变色第2行起
row{even[\tableroweven]}={bg=evenRowColor},
% row{even}={
% bg={\ifnum\rownum>\startEvenRow-1 evenRowColor\else white\fi}
% },
% 合并单元格强制白色背景
cell{*}{*}={merge={bg=white}},
% 紧凑间距+自动换行
rowsep=3pt,
colsep=3pt,
vlines={0pt},
% 自动换行:所有单元格左对齐,自动换行
cell{*}{*}={cmd=\raggedright},
}%
}{%
\end{tblr}%
\vspace{0.5em}
\par\small\noindent{\tablenote}%
% \par{#6}%
\end{table}%
}
% ========== 修复版:跨栏表格环境 tmrtable* ==========
% 使用方式:\begin{tmrtable*}{列格式}{表头行} 表格内容 \end{tmrtable*}
\newenvironment{tmrtable*}[5]{%
% 环境开始时执行的代码
\begin{table*}[htb!]
\centering
\caption{#1}
\label{#2}
\def\tablenote{#5}
\edef\tableroweven{\the\numexpr #4 + 1 \relax}
\centering % 跨栏表格居中
\begin{tblr}{
% 优化列宽:调整比例,适配长文本自动换行
colspec={#3},
% 三线表样式
hline{1}={1.5pt},
hline{2}={0.75pt},
hline{Z}={1.5pt},
% 表头样式:背景为白色
row{#4}={font=\bfseries, bg=white},
% 偶数行变色第2行起
row{even[2]}={bg=evenRowColor},
% 合并单元格强制白色背景
cell{*}{*}={merge={bg=white}},
% 紧凑间距+自动换行
rowsep=3pt,
colsep=3pt,
vlines={0pt},
% 自动换行:所有单元格左对齐,自动换行
cell{*}{*}={cmd=\raggedright},
}%
}{%
% 环境结束时执行的代码
\end{tblr}
\vspace{0.5em}
\par\small\noindent{\tablenote}%
\end{table*}%
}
%自定义 \appendix 命令,使得附录部分的章节编号从 0 开始并将章节格式设置为“Appendix 1”样式
\renewcommand\appendix{\par
\setcounter{section}{0}
\setcounter{subsection}{0}
\gdef\thesection{Appendix \@arabic\c@section}
}
%定义超链接的样式
%\ifcup@hyperref
%\expandafter\RequirePackage
%\else
%\expandafter\@gobble
%\fi
%{hyperref}
\usepackage{mdframed} % 高亮背景容器
\usepackage{enumitem} % 优化列表排版(解决默认列表间距问题)
\definecolor{hilight-bg}{RGB}{222,235,247}
\NewDocumentEnvironment{highlight}{+b}{%
% 1. 外层高亮容器
\begin{mdframed}[
backgroundcolor=hilight-bg, % 整体背景
hidealllines=true,
% linecolor=hilight-border, % 边框颜色
% linewidth=0.5pt, % 边框宽度
roundcorner=4pt, % 圆角(可选,增强美观)
leftmargin=3mm, % 容器左外边距
rightmargin=3mm, % 容器右外边距
innertopmargin=5mm, % 容器内顶部间距
innerbottommargin=3mm, % 容器内底部间距
innerleftmargin=3mm, % 容器内左侧间距
innerrightmargin=3mm, % 容器内右侧间距
]
% 2. 内部列表环境(承载多个 \item{title}{content}
\begin{itemize}[
leftmargin=0pt, % 取消列表默认左缩进
label={}, % 隐藏列表默认项目符号
itemsep=6mm, % 条目之间的垂直间距(可调整)
topsep=0pt, % 列表顶部无额外间距
partopsep=0pt
]
#1 % 接收环境内的所有 \item 内容
\end{itemize}
\end{mdframed}
}{}
\NewDocumentCommand{\highlightitem}{mm}{%
\item[{}] % 空标签,避免默认列表符号
\showfont\textbf{\itshape #1}\\[1mm] % 标题换行1.5mm间距
\begin{flushright}
\vspace{-2.1em}% 取消顶部额外间距
\begin{minipage}[t]{\dimexpr\linewidth - 1em} % 宽度可调整
\footnotesize#2
\end{minipage}
\vspace{0pt}% 取消底部额外间距
\end{flushright}
}
%%章节的基本调整
\RequirePackage{xcolor} % 引入 xcolor 宏包以支持颜色
\RequirePackage{tikz}
\definecolor{mycolor}{rgb}{0.87, 0.93, 0.97}
\definecolor{sectioncolor}{HTML}{D25A5A}
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}% 上间距
{1.2ex \@plus.2ex}% 下间距
{% 关键:添加 \noindent 取消标题缩进,避免右移
\bodyfont\sffamily\bfseries\noindent\@mysection}}
\def\@mysection#1{%
\tikz[baseline]{%
\node[fill=mycolor,
text=sectioncolor,
rounded corners=3pt,
inner sep=5pt,
minimum width=\linewidth, % 占全行宽度
align=left, % 文字左对齐
anchor=west] % 节点锚点设为左边界(核心修正)
{#1};
}%
}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{0.2ex \@plus .2ex}%
{\xiaoliu\bodyfont\sffamily\bfseries}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{0.2ex \@plus .2ex}%
{\bodyfont\sffamily\bfseries}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\bodyfont\sffamily}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\bodyfont\sffamily}}
%%这一命令用于文本的悬挂缩进或特定格式化
%\def\@hangfrom#1{\setbox\@tempboxa\hbox{{#1}}%
% \hangindent 0pt%\wd\@tempboxa
%\noindent\box\@tempboxa}
%章节格式
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
{\csname the#1\endcsname\quad}% default
{\csname #1@cntformat\endcsname}% individual control
}
\def\section@cntformat{\thesection.\quad}
\def\section@cntformat{}%第一级标题不显示编号
\def\subsection@cntformat{}%
\def\subsubsection@cntformat{}%
%章节格式
\newcommand*\cup@section{}
\let\cup@section\section
\newcommand*\cup@subsection{}
\let\cup@subsection\subsection
\newcommand*\cup@subsubsection{}
\let\cup@subsubsection\subsubsection
\newcommand*\cup@startsection@orig{}
\let\cup@startsection@orig\@startsection
\newcommand\cup@startsection[6]{%
\if@noskipsec \leavevmode \fi
\par \@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi
\if@nobreak \everypar{}\else
\addpenalty\@secpenalty\addvspace\@tempskipa\fi
\@ifstar{\@dblarg{\@sect{#1}{\@m}{#3}{#4}{#5}{#6}}}%
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
}
\let\@startsection\cup@startsection
\newcommand*\cup@startsection@alt[6]{%
\if@noskipsec \leavevmode \fi
\par \@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi
\if@nobreak \everypar{}\else
\addpenalty\@secpenalty\addvspace\@tempskipa\fi
\@ifstar{\@ssect{#3}{#4}{#5}{#6}}
{\@ssect{#3}{#4}{#5}{#6}}%
}
\newcommand*\cup@sections@none{%
\@ifstar{%
\cup@sections@none@aux
}{%
\cup@sections@none@aux
}%
}
\newcommand*\cup@sections@none@aux[2][]{%
\cup@warning{%
(Sub)section `#2' ignored%
}%
}
\patchcmd{\@ssect}{#4}{\color{structure@color}#4}{}{}
\patchcmd{\@sect}{#6}{\color{structure@color}#6}{}{}
\newcommand*\SectionNumbersOff{%
\let\@startsection\cup@startsection@alt
}
\@onlypreamble\SectionNumbersOff
\newcommand*\SectionNumbersOn{%
\let\@startsection\cup@startsection
}
\@onlypreamble\SectionNumbersOn
\newcommand*\SectionsOff{%
\let\section\cup@sections@none
\let\subsection\cup@sections@none
\let\subsubsection\cup@sections@none
}
\@onlypreamble\SectionsOff
\newcommand*\SectionsOn{%
\let\section\cup@section
\let\subsection\cup@subsection
\let\subsubsection\cup@subsubsection
}
\@onlypreamble\SectionsOn
\begingroup
\toks@=\expandafter{\tableofcontents}
\xdef\tableofcontents{%
\begingroup
\let\noexpand\@startsection\noexpand\cup@startsection@orig
\the\toks@
\endgroup
}
\endgroup
%%定义两个小的引用短句acknowledgementsuppinfoname
\newenvironment{acknowledgement}{%
\cup@section*{\acknowledgementname}%
}{}
\newenvironment{suppinfo}{%
\cup@section*{\suppinfoname}%
}{}
\newcommand*\acknowledgementname{Acknowledgement}
%%????????????????这里存在的意义是什么?
\AtEndOfClass{%
\def\bibsection{%
\cup@section*{\refname}%
}%
}
\newcommand*\suppinfoname{Supporting Information Available}
%%对于整体largetwo的整体设置十分重要
\newcommand*\cup@layout@largetwo{%
\ifcup@simfonts\simfonts\fi
\geometry{paperwidth=210mm,paperheight=297mm,
left=1.91cm,top=2.54cm,bottom=2.54cm,right=1.91cm,
columnsep=1.5em,headsep=1cm
}
\appto{\authorfont}{\sffamily}
\appto{\affilfont}{\sffamily}
\appto{\datesize}{\sffamily}
\appto{\emailfont}{\sffamily}
\appto{\normalsize}{\sffamily}
\def\ps@plain{
\renewcommand{\@oddhead}{
\sffamily
\hfill
\parbox[t]{150mm}{
\raggedleft
{\showfont\large\textbf{\color[HTML]{002060} \cup@articletype}}\par
\vspace{1pt}
{\bodyfont\footnotesize {\journalnamefont\textbf{\cup@journal@name}}\ \cup@year;\cup@vol\ifx\cup@no\empty\else(\cup@no)\fi:\cup@page.\ https://doi.org/\cup@doi}\par
}%
}
\renewcommand{\@evenhead}{\@oddhead}
\renewcommand{\@evenfoot}{
\sffamily
{\bodyfont\footnotesize\color[HTML]{002060} {Submit a manuscript:\ \cup@journalweb} }
\hfill
\thepage
}
\renewcommand{\@oddfoot}{\@evenfoot}% 奇数页页脚 = 偶数页页脚(统一样式,不分奇偶)
}
\pagestyle{plain}
}
% Journal Definitions
\def\cup@jnl@default{%
\def\cup@journal@name{Default Journal}
\cup@layout@largetwo
}%
\def\cup@jnl@tmr{%
\edef\cup@journal@name{\cup@journalname}
\cup@layout@largetwo
\patch@numeric@authors
\let\endnote\footnote
\let\printendnotes\relax
\renewcommand{\thefootnote}{\alphalph{\value{footnote}}}
\renewcommand\footnoterule{}
\advance\skip\footins 4\p@\@plus2\p@\relax
}%
%启动
\ifcsname cup@jnl@\cup@journal\endcsname%
\csname cup@jnl@\cup@journal\endcsname%
\else%
\cup@warning{%
Unknown journal `\cup@journal':\MessageBreak
using default configuration%
}%
\cup@jnl@default%
\fi%
\RequirePackage{xpatch}
\RequirePackage{xstring}
%%定义参考文献的样式
\providecommand*\cup@reference@code{% AMA格式配置基于BibLaTeX原生numeric样式
\RequirePackage[%
style=numeric, % 核心数字引用样式AMA是数字上标
backend=biber, % 文献处理后端必须用Biber
sorting=none, % 关键按引用顺序排序AMA要求非字母顺序
maxnames=3, % 作者最多显示6位超过用et al.AMA规范
minnames=3, % 最少显示1位作者
giveninits=false, % 作者名名首字母缩写如Zhang SDAMA要求
natbib=true, % 兼容natbib命令\citet/\citep
url=false,% % 全局禁用URLAMA优先显示DOI可手动开启
doi=true,
citestyle=numeric-comp,
]{biblatex}
\definecolor{citecolor}{RGB}{45, 144, 203}
\let\oldparencite\parencite%
\renewcommand{\parencite}[1]{%
\textcolor{citecolor}{\oldparencite{##1}}%
}
\DeclareFieldFormat{labelnumberwidth}{%
##1.\thinspace%
}
\DeclareFieldFormat{title}{##1}%
\DeclareFieldFormat[article]{title}{##1}% 期刊文章
\DeclareFieldFormat[book]{title}{##1}% 图书
\DeclareFieldFormat[incollection]{title}{##1}% 论文集中的文章
\DeclareFieldFormat[report]{title}{##1}% 研究报告
\DeclareFieldFormat[thesis]{title}{##1}% 学位论文
\DeclareFieldFormat{year}{##1}
\ExecuteBibliographyOptions{date=year}
\DeclareFieldFormat{volume}{##1}
\DeclareFieldFormat{number}{(##1)}
\DeclareFieldFormat{pages}{##1}
\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock%
\usebibmacro{title}%
\newunit{\labelnamepunct}\newblock%
\usebibmacro{journal}%
\setunit{\labelnamepunct}%
\printfield{year}%
\setunit{\addsemicolon}% 年份后直接加英文分号(无空格)
\iffieldundef{volume}{% 无卷时不显示期
}{%
\printfield{volume}% 打印卷
}%
\iffieldundef{number}{}{%
(\printfield{number})%
}%
\setunit{\addcolon}%
\printfield{pages}
\newunit\newblock%
\usebibmacro{doi+eprint+url}%
\newunit\newblock%
\usebibmacro{finentry}%
}
\DeclareBibliographyDriver{misc}{%
\usebibmacro{bibindex}% 索引保持和article一致
\usebibmacro{begentry}% 条目开始(保持格式统一)
\usebibmacro{title}% 核心直接展示title字段优先级最高
\newunit\newblock%
\usebibmacro{finentry}% 条目结束(保持格式统一)
}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}% 索引
\usebibmacro{begentry}% 条目开始
\usebibmacro{author}% 可选:显示作者(无则跳过)
\setunit{\labelnamepunct}\newblock% 作者与标题的分隔符
\usebibmacro{title}% 核心必显title字段
\newunit{\labelnamepunct}\newblock% 年份与出版商的分隔符
\iffieldundef{publisher}{}{% 仅当填写publisher时显示
\printfield{publisher}% book类型核心展示出版商
}%
\newunit\newblock%
\usebibmacro{finentry}% 条目结束
}
\renewcommand*{\finalnamedelim}{\addcomma\space}%最后两个作者之间的分隔符移除and改为逗号+空格(或仅空格)
\DeclareFieldFormat{doi}{Available at:\newline\hspace{2em}\textcolor[HTML]{0082AA}{\url{https://doi.org/##1}}\nopunct}%
\DeclareNameAlias{sortname}{family-given}
\renewrobustcmd*{\bibinitdelim}{}% 名缩写无逗号分隔Zhang SD而非Zhang, S. D.
\renewrobustcmd*{\bibinitperiod}{} % 取消缩写点SD而非S.D.
\renewcommand*{\bibfont}{\bodyfont\footnotesize}
}
\cup@reference@code
%\cup@type@check
%\ifx\cup@manuscript\cup@manuscript@note
% \SectionsOff
%\fi
%\ifx\cup@manuscript\cup@manuscript@review
% \SectionsOn
% \SectionNumbersOn
%\fi
%\ifx\cup@manuscript\cup@manuscript@suppinfo
% \setkeys{cup}{maxauthors = 0}
% \def\thepage{S-\arabic{page}}
% \renewcommand*\thefigure{S\@arabic\c@figure}
% \renewcommand*\thescheme{S\@arabic\c@scheme}
% \renewcommand*\thetable{S\@arabic\c@table}
% \AtBeginDocument
% {%
% \renewcommand*\citenumfont[1]{S#1}%
% \renewcommand*\bibnumfmt[1]{(S#1)}%
% }
%\fi
\SectionNumbersOn