├── phyasgn ├── phyasgn.pdf ├── phylogo.pdf ├── phyasgn-example.pdf ├── README.md ├── utxmia.fd ├── phyasgn-example.tex ├── phyasgn.cls └── phyasgn.tex └── README.md /phyasgn/phyasgn.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaZTX/phyasgn/HEAD/phyasgn/phyasgn.pdf -------------------------------------------------------------------------------- /phyasgn/phylogo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaZTX/phyasgn/HEAD/phyasgn/phylogo.pdf -------------------------------------------------------------------------------- /phyasgn/phyasgn-example.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaZTX/phyasgn/HEAD/phyasgn/phyasgn-example.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # phyasgn 2 | 北京大学物理学院课程作业模板 3 | 4 | 里面还有一个 `README.md`, 看那个吧~ 5 | 6 | 本模板欢迎维护, 可邮件联系或提 issue 7 | -------------------------------------------------------------------------------- /phyasgn/README.md: -------------------------------------------------------------------------------- 1 | # readme 2 | 3 | 指路: 4 | 5 | - phyasgn.pdf:教程 6 | - phyasgn-example:示例 7 | 8 | 作者邮箱:ztx@stu.pku.edu.cn 9 | 10 | 用户需求可以直接发到邮箱,作者会回复的 (一周之内)。 11 | 12 | 代码环境在做了…… -------------------------------------------------------------------------------- /phyasgn/utxmia.fd: -------------------------------------------------------------------------------- 1 | \ProvidesFile{utxmia.fd} 2 | [2000/12/15 v3.1] 3 | 4 | \DeclareFontFamily{U}{txmia}{\skewchar\font127 } 5 | \DeclareFontShape{U}{txmia}{m}{it}{ 6 | <-> txmia% 7 | }{} 8 | \DeclareFontShape{U}{txmia}{bx}{it}{ 9 | <-> txbmia% 10 | }{} 11 | \DeclareFontShape{U}{txmia}{l}{it}{<->ssub * txmia/m/it}{} 12 | \DeclareFontShape{U}{txmia}{b}{it}{<->ssub * txmia/bx/it}{} 13 | 14 | \endinput 15 | -------------------------------------------------------------------------------- /phyasgn/phyasgn-example.tex: -------------------------------------------------------------------------------- 1 | \documentclass{phyasgn} 2 | \phyasgn{ 3 | stuname = 张三, % 设置学生姓名 4 | stunum = 0000011000, % 设置学号 5 | setasgnnum = 1, % 设置课程次数 6 | classname = 测试课程, % 设置课程名称 7 | } 8 | 9 | \usepackage{listings} 10 | \lstset{numbers=left,basicstyle=\ttfamily,columns=flexible} 11 | 12 | \title{\texttt{phyasgn-examples.tex} 源码} 13 | \date{} 14 | 15 | \begin{document} 16 | \maketitle 17 | 18 | 这里我们把本文档的代码直接展示出来: 19 | \lstinputlisting{phyasgn-example.tex} 20 | 第 2 到 7 行利用 \verb"phyasgn.cls" 提供的接口对文档进行设置. 21 | \end{document} -------------------------------------------------------------------------------- /phyasgn/phyasgn.cls: -------------------------------------------------------------------------------- 1 | \NeedsTeXFormat{LaTeX2e} 2 | \RequirePackage{xkeyval,expl3,xparse} 3 | \ProvidesClass{phyasgn}[2021/09/30 v0.2b PKU-PHY assignment class] 4 | \LoadClass[11pt]{article} 5 | 6 | \RequirePackage{xeCJK} 7 | \RequirePackage[zihao=false]{ctex} 8 | \ctexset{ 9 | contentsname = {\hfil 目\hspace{0.8em}录}, 10 | punct=kaiming, 11 | } 12 | 13 | \RequirePackage{graphicx} 14 | \RequirePackage{amsmath} 15 | 16 | \define@boolkey{phyasgn}[phyasgn@opt@]{asgnnum}[true]{} 17 | 18 | \define@key{phyasgn}{stunum}[0000000000]{\gdef\phyasgn@opt@stunum{#1}} 19 | \define@key{phyasgn}{stuname}[学生姓名]{\gdef\phyasgn@opt@stuname{#1}} 20 | \define@key{phyasgn}{classname}[课程名]{\gdef\phyasgn@opt@classname{#1}} 21 | \define@key{phyasgn}{setasgnnum}[0]{\gdef\phyasgn@opt@setasgnnum{#1}} 22 | 23 | \setkeys{phyasgn}{ 24 | stunum={{\sffamily xxxxx}11{\sffamily xxx}}, 25 | stuname={\texttt{学生姓名}}, 26 | classname=课程, 27 | setasgnnum={\texttt{NULL}}, 28 | asgnnum=true, 29 | }% 30 | 31 | \newcommand{\phyasgn}[1]{\setkeys{phyasgn}{#1}} 32 | 33 | \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}% 34 | {0em}% 35 | {-1em}% 36 | {\normalfont\normalsize\bfseries}} 37 | \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% 38 | {0em}% 39 | {-1em}% 40 | {\normalfont\normalsize\itshape}} 41 | 42 | \RequirePackage{geometry} 43 | \RequirePackage{fancyhdr} 44 | \RequirePackage{lastpage} 45 | \geometry{a4paper,left=3cm,right=3cm,headheight=30pt,top=3.6cm,bottom=3cm,footnotesep=1.6em} 46 | \renewcommand*{\headrulewidth}{0.8pt} 47 | % foot 48 | \fancyfoot[C]{} 49 | % head --- L 50 | \fancyhead[L] 51 | {\begin{tabular}[b]{@{}l@{}} 52 | \includegraphics[height=2.12em]{phylogo.pdf} 53 | \end{tabular}} 54 | % head --- C 55 | \fancyhead[C] 56 | {\begin{tabular}[b]{@{}c@{}} 57 | \large 58 | \ifphyasgn@opt@asgnnum 59 | 第~\phyasgn@opt@setasgnnum~次课程作业 60 | \else 61 | 课~~程~~作~~业 62 | \fi 63 | \\[-2pt] 64 | {\scriptsize 姓名:~\phyasgn@opt@stuname\quad 学号:~\phyasgn@opt@stunum} 65 | \end{tabular}} 66 | % head --- R 67 | \fancyhead[R] 68 | {\begin{tabular}[b]{@{}r@{}} 69 | {\small 第~\thepage~页, 共~\pageref{LastPage}~页}\\[-2pt] 70 | {\scriptsize \phyasgn@opt@classname} 71 | \end{tabular}} 72 | \pagestyle{fancy} 73 | 74 | 75 | 76 | 77 | 78 | \makeatletter 79 | % 设置标题格式 80 | \renewcommand*\maketitle{% 81 | \begin{center} 82 | {\bfseries\LARGE\@title \par} 83 | \vskip 0.5em 84 | \@author\par%{\global\let\author\@empty} 85 | \@date%{\global\let\date\@empty}% 86 | \thispagestyle{fancy} 87 | \end{center} 88 | \@thanks 89 | \setcounter{footnote}{0} 90 | \global\let\thanks\relax 91 | \global\let\maketitle\relax 92 | \global\let\@thanks\@empty 93 | \global\let\@author\@empty 94 | \global\let\@date\@empty 95 | \global\let\@title\@empty 96 | } 97 | % 设置目录格式, 其他的禁止修改, 否则ztx就要生气了!!! 98 | \let\TableOfContents\tableofcontents 99 | \renewcommand\tableofcontents{\TableOfContents\par\vspace{1.2em}} 100 | % 设置摘要格式 101 | \renewcommand\abstractname{摘\hspace{0.6em}要} 102 | \makeatother 103 | 104 | \RequirePackage{tcolorbox} 105 | \newtcbox{FootnoteBox}{arc = 0pt, outer arc = 0pt, 106 | colback = white, colframe = black, 107 | boxsep = 0pt, left = 0.2ex, right = 0.2ex, top = 0.1ex, bottom = 0.2ex, 108 | boxrule = 0.4pt} 109 | \renewcommand\thefootnote{\FootnoteBox{\arabic{footnote}}} 110 | \usepackage[perpage]{footmisc} 111 | 112 | \RequirePackage{enumitem} 113 | \setlist[enumerate]{topsep=0.25em,labelwidth=2em,labelsep=0.25em,leftmargin=0em,itemindent=4em,listparindent=2em,parsep=0em} 114 | \renewcommand\labelenumi{\makebox[1.75em][l]{\textbf{\theenumi.}}} 115 | \renewcommand\theenumii{\arabic{enumii}} 116 | \renewcommand\labelenumii{\makebox[1.75em][l]{(\theenumii)}} 117 | \renewcommand\theenumiii{\roman{enumiii}} 118 | \renewcommand\labelenumiii{\makebox[1.75em][l]{\theenumiii.}} 119 | \renewcommand\theenumiv{\roman{enumiv}} 120 | \renewcommand\labelenumiv{\makebox[1.75em][l]{(\theenumiv)}} 121 | \setlist[itemize]{topsep=\parskip,labelwidth=0.5em,labelsep=0.5em,leftmargin=0em,itemindent=3em,listparindent=2em,parsep=0em} 122 | 123 | \RequirePackage{multicol} 124 | \setlength{\columnseprule}{0.5pt} 125 | \setlength{\columnsep}{2em} 126 | \RequirePackage[toc]{multitoc} 127 | 128 | \newenvironment{sol}{\par\textbf{解}\hspace{1em}\ignorespaces}{} 129 | \newenvironment{pf}{\par\textbf{证明}\hspace{1em}\ignorespaces}{\hfill\rule{0.7em}{0.7em}} 130 | 131 | 132 | 133 | \DeclareSymbolFont{lettersA}{U}{txmia}{m}{it} 134 | \DeclareMathSymbol{\alphaup}{\mathord}{lettersA}{11} 135 | \DeclareMathSymbol{\betaup}{\mathord}{lettersA}{12} 136 | \DeclareMathSymbol{\gammaup}{\mathord}{lettersA}{13} 137 | \DeclareMathSymbol{\deltaup}{\mathord}{lettersA}{14} 138 | \DeclareMathSymbol{\epsilonup}{\mathord}{lettersA}{15} 139 | \DeclareMathSymbol{\zetaup}{\mathord}{lettersA}{16} 140 | \DeclareMathSymbol{\etaup}{\mathord}{lettersA}{17} 141 | \DeclareMathSymbol{\thetaup}{\mathord}{lettersA}{18} 142 | \DeclareMathSymbol{\iotaup}{\mathord}{lettersA}{19} 143 | \DeclareMathSymbol{\kappaup}{\mathord}{lettersA}{20} 144 | \DeclareMathSymbol{\lambdaup}{\mathord}{lettersA}{21} 145 | \DeclareMathSymbol{\muup}{\mathord}{lettersA}{22} 146 | \DeclareMathSymbol{\nuup}{\mathord}{lettersA}{23} 147 | \DeclareMathSymbol{\xiup}{\mathord}{lettersA}{24} 148 | \DeclareMathSymbol{\piup}{\mathord}{lettersA}{25} 149 | \DeclareMathSymbol{\rhoup}{\mathord}{lettersA}{26} 150 | \DeclareMathSymbol{\sigmaup}{\mathord}{lettersA}{27} 151 | \DeclareMathSymbol{\tauup}{\mathord}{lettersA}{28} 152 | \DeclareMathSymbol{\upsilonup}{\mathord}{lettersA}{29} 153 | \DeclareMathSymbol{\phiup}{\mathord}{lettersA}{30} 154 | \DeclareMathSymbol{\chiup}{\mathord}{lettersA}{31} 155 | \DeclareMathSymbol{\psiup}{\mathord}{lettersA}{32} 156 | \DeclareMathSymbol{\omegaup}{\mathord}{lettersA}{33} 157 | \DeclareMathSymbol{\varepsilonup}{\mathord}{lettersA}{34} 158 | \DeclareMathSymbol{\varthetaup}{\mathord}{lettersA}{35} 159 | \DeclareMathSymbol{\varpiup}{\mathord}{lettersA}{36} 160 | \DeclareMathSymbol{\varrhoup}{\mathord}{lettersA}{37} 161 | \DeclareMathSymbol{\varsigmaup}{\mathord}{lettersA}{38} 162 | \DeclareMathSymbol{\varphiup}{\mathord}{lettersA}{39} 163 | \def\upalpha{\ensuremath{\alphaup}} 164 | \def\upbeta{\ensuremath{\betaup}} 165 | \def\upgamma{\ensuremath{\gammaup}} 166 | \def\updelta{\ensuremath{\deltaup}} 167 | \def\upepsilon{\ensuremath{\epsilonup}} 168 | \def\upzeta{\ensuremath{\zetaup}} 169 | \def\upeta{\ensuremath{\etaup}} 170 | \def\uptheta{\ensuremath{\thetaup}} 171 | \def\upiota{\ensuremath{\iotaup}} 172 | \def\upkappa{\ensuremath{\kappaup}} 173 | \def\uplambda{\ensuremath{\lambdaup}} 174 | \def\upmu{\ensuremath{\muup}} 175 | \def\upnu{\ensuremath{\nuup}} 176 | \def\upxi{\ensuremath{\xiup}} 177 | \def\uppi{\ensuremath{\piup}} 178 | \def\uprho{\ensuremath{\rhoup}} 179 | \def\upsigma{\ensuremath{\sigmaup}} 180 | \def\uptau{\ensuremath{\tauup}} 181 | \def\upupsilon{\ensuremath{\upsilonup}} 182 | \def\upphi{\ensuremath{\phiup}} 183 | \def\upchi{\ensuremath{\chiup}} 184 | \def\uppsi{\ensuremath{\psiup}} 185 | \def\upomega{\ensuremath{\omegaup}} 186 | \def\upvarepsilon{\ensuremath{\varepsilonup}} 187 | \def\upvartheta{\ensuremath{\varthetaup}} 188 | \def\upvarpi{\ensuremath{\varpiup}} 189 | \def\upvarrho{\ensuremath{\varrhoup}} 190 | \def\upvarsigma{\ensuremath{\varsigmaup}} 191 | \def\upvarphi{\ensuremath{\varphiup}} 192 | 193 | \def\const{\ensuremath{\mathrm{const}}} 194 | 195 | \RequirePackage{amsfonts} 196 | \def\R{\mathbb{R}} 197 | \def\C{\mathbb{C}} 198 | \def\Z{\mathbb{Z}} 199 | \def\N{\mathbb{N}} 200 | \def\Q{\mathbb{Q}} 201 | \def\e{\mathrm{e}} 202 | \def\oldRe{\Re} 203 | \def\oldIm{\Im} 204 | 205 | % i 和 j 206 | \let\iWithoutDot\i 207 | \let\i\relax 208 | \def\i 209 | { 210 | \ifmmode\mathrm{i} 211 | \else\iWithoutDot 212 | \fi 213 | } 214 | 215 | \let\jWithoutDot\j 216 | \let\j\relax 217 | \def\j 218 | { 219 | \ifmmode\mathrm{j} 220 | \else\jWithoutDot 221 | \fi 222 | } 223 | 224 | 225 | 226 | \newcommand\open{\mathopen{}\mathclose\bgroup\left} 227 | \newcommand\close{\aftergroup\egroup\right} 228 | 229 | \def\diff{\mathrm{d}} 230 | \def\dif{\mathop{}\hphantom{\mskip-\thinmuskip}\mathrm{d}}% 231 | \let\daccent\d 232 | \let\d\relax 233 | \newcommand\d{\ifmmode\dif\else\expandafter\daccent\fi} 234 | \DeclareDocumentCommand\dx{}{\ensuremath{\dif x}} 235 | \DeclareDocumentCommand\dy{}{\ensuremath{\dif y}} 236 | \DeclareDocumentCommand\dz{}{\ensuremath{\dif z}} 237 | \DeclareDocumentCommand\dt{}{\ensuremath{\dif t}} 238 | 239 | \DeclareDocumentCommand\tdv{ m m }{\mathrm{d}#1/\mathrm{d}#2} 240 | \DeclareDocumentCommand\dv{ m m }{\frac{\mathrm{d}#1}{\mathrm{d}#2}} 241 | 242 | 243 | 244 | \everymath{\displaystyle} 245 | \setlength{\lineskip}{4pt} 246 | \setlength{\lineskiplimit}{2pt} 247 | \endinput 248 | -------------------------------------------------------------------------------- /phyasgn/phyasgn.tex: -------------------------------------------------------------------------------- 1 | \documentclass{phyasgn}\usepackage{nag} 2 | \phyasgn{classname=北京大学物理学院课程作业模板} 3 | 4 | %\ctexset{punct=kaiming} 5 | \setCJKmainfont[ItalicFont=FZKTK.TTF,BoldFont=FZXBSK.TTF]{FZSSK.TTF} 6 | \setCJKsansfont[BoldFont=FZHTK.TTF]{FZXH1K.TTF} 7 | \setCJKmonofont[ItalicFont=FZKTK.TTF]{FZFSK.TTF} 8 | \newCJKfontfamily\FZSS{FZSSK.TTF} 9 | \newCJKfontfamily\FZKT{FZKTK.TTF} 10 | \newCJKfontfamily\FZFS{FZFSK.TTF} 11 | \newCJKfontfamily\FZHT{FZHTK.TTF} 12 | \setmainfont{TeX Gyre Termes} 13 | \setsansfont{TeX Gyre Heros}[Scale=MatchLowercase] 14 | \setmonofont{Ubuntu Mono}%[Scale=MatchLowercase] 15 | \newfontfamily\lm{Latin Modern Roman} 16 | \usepackage{unicode-math} 17 | \setmathfont{TeX Gyre Termes Math} 18 | 19 | \newcommand\pkg[1]{\textsf{#1}} 20 | \newenvironment{csop}{\vskip\topsep\noindent\hspace{2em}\ttfamily\small\ignorespaces}{\vskip\topsep\par} 21 | 22 | \usepackage{booktabs,metalogo,siunitx,marginnote,manfnt,url} 23 | \usepackage[unicode]{hyperref} 24 | \hypersetup{pdfstartview=XYZ,hidelinks,pdfcreator=XeTeX Output,pdfauthor=张庭瑄, 25 | pdftitle=phyasgn文档类} 26 | \usepackage{geometry,fancyhdr} 27 | \geometry{left=3cm,right=3cm,marginparwidth=4em} 28 | \fancyhead[L] 29 | {\begin{tabular}[b]{@{}l@{}} 30 | \hyperref{https://www.phy.pku.edu.cn/}{}{}{\includegraphics[height=2.12em]{phylogo.pdf}} 31 | \end{tabular}} 32 | \fancyhead[C] 33 | {\begin{tabular}[b]{@{}c@{}} 34 | \large 35 | \pkg{phyasgn}\,文档类 36 | \\[-2pt] 37 | {\scriptsize 姓名:~张庭瑄\quad 学号:~{\sffamily xxxxx}11{\sffamily xxx}} 38 | \end{tabular} 39 | } 40 | 41 | \usepackage{shortvrb,fancyvrb} 42 | \MakeShortVerb| 43 | \fvset{xleftmargin=2em,fontsize=\small} 44 | \makeatletter 45 | \ifx\l@nohyphenation\undefined 46 | \newlanguage\l@nohyphenation 47 | \fi 48 | \DeclareRobustCommand\meta[1]{% 49 | \ensuremath\langle 50 | \ifmmode \expandafter \nfss@text \fi 51 | {% 52 | \rmfamily\itshape 53 | \edef\meta@hyphen@restore 54 | {\hyphenchar\the\font\the\hyphenchar\font}% 55 | \hyphenchar\font\m@ne 56 | \language\l@nohyphenation 57 | #1\/% 58 | \meta@hyphen@restore 59 | }\ensuremath\rangle 60 | } 61 | \makeatother 62 | 63 | \def\phyasgn{\pkg{phyasgn}} 64 | \def\version{0.2 $\upbeta$} 65 | 66 | \title{ 67 | {\pkg{phyasgn}\,文档类}\\[-8pt] 68 | {\normalsize ——北京大学物理学院课程作业模板}\\[-11pt] 69 | {\normalsize\mdseries Version \version} 70 | } 71 | \author{张庭瑄} 72 | \date{2021 年 9 月 30 日} 73 | 74 | \begin{document} 75 | \maketitle 76 | 77 | \begin{abstract} 78 | \phyasgn 是基于 \pkg{article} 的文档类, 旨在提供一个风格统一的课程作业模板. 79 | 本模板的中文支持方案是 \pkg{xeCJK} 宏包, 因此需要使用 \XeLaTeX{} 编译. 80 | 在这个模板中, 已经定义好了一些数学命令, 方便用户输入. 81 | \end{abstract} 82 | 83 | 84 | 85 | \tableofcontents 86 | 87 | 88 | 89 | 90 | 91 | \section{模板的安装} 92 | 对于 Windows 系统下的 \TeX{} Live, 把模板文件夹 (如果下载的是 |.zip| 压缩包则需要解压) 移动到 93 | \begin{csop} 94 | \meta{安装磁盘}:\textbackslash\meta{安装目录}\textbackslash texlive\textbackslash\meta{版本}\textbackslash texmf-dist\textbackslash tex\textbackslash latex\textbackslash 95 | \end{csop} 96 | \noindent 目录下或 97 | \begin{csop} 98 | C:\textbackslash Users\textbackslash \meta{用户名}\textbackslash texmf\textbackslash tex\textbackslash 99 | \end{csop} 100 | \noindent 目录下.\footnote{如果不存在此文件夹, 请新建一个.} MiK\TeX{} 与之类似.\footnote{并不建议使用 MiK\TeX{} 发行版, \emph{不要}使用 C\TeX{} 发行版.} 101 | 102 | 对于 macOS 系统下的 \TeX{} Live, 把模板文件夹移动到 103 | \begin{csop} 104 | usr/local/texlive/\meta{版本}basic/texmf-dist/tex/latex/ 105 | \end{csop} 106 | \noindent 目录下. Linux 下的 \TeX{} Live 以及 macOS 下的 Mac\TeX{} 同理. 107 | 108 | 文件夹包含以下内容: 109 | \begin{itemize} 110 | \item |phyasgn.cls|: 文档类; 111 | \item |phylogo.pdf|: 物理学院图标; 112 | \item |phyasgn.pdf|: 文档类手册; 113 | \item |phyasgn-example.pdf|: 样例, 可直接查阅. 114 | \end{itemize} 115 | 116 | 117 | \section{系统要求} 118 | \begin{itemize} 119 | \item \textbf{包含 \XeLaTeX{} 的 \TeX{} 发行版.} 120 | 建议使用 \TeX{} Live, macOS 用户可以考虑 Mac\TeX. 121 | %\item \textbf{\pkg{xeCJK} 宏包.} 122 | %提供中文支持, 使用 \XeLaTeX{} 排版. 123 | %\item \textbf{\pkg{ctex} 宏集.} 124 | \item \textbf{TTF 或 OTF 格式的中文字体.}\footnote{在 Windows 10 系统下, 125 | 若需使用自定义中文字体, 需要\emph{为所有用户安装}.} 126 | 建议使用支持 GBK 字符集的字体. 127 | %\item \textbf{其他的一些基本的宏包, 如 \pkg{amsmath}, \pkg{amssymb}, \pkg{amsfonts}.} 128 | %作为基本的数学输入支持. 129 | %\item \textbf{\pkg{txfonts} 宏包.} 130 | %仅使用 \pkg{txfonts} 中的 |txmia| 字体, %用以实现本模板对数学模式下直立体希腊字母的支持, 131 | %并不需要完整的宏包. 132 | \item \textbf{以下宏包:}\\ 133 | \begin{minipage}{\textwidth} 134 | \centering 135 | \begin{tabular}{lllll} 136 | \toprule 137 | \pkg{amsfonts}&\pkg{amsmath}&\pkg{ctex}&\pkg{enumitem}&\pkg{expl3}\\ 138 | \pkg{fancyhdr}&\pkg{footmisc}&\pkg{geometry}&\pkg{graphicx}&\pkg{lastpage}\\ 139 | \pkg{multicol}&\pkg{multitoc}&\pkg{tcolorbox}&\pkg{xeCJK}&\pkg{xkeyval}\\ 140 | \pkg{xparse}&&&&\\ 141 | \bottomrule 142 | \end{tabular} 143 | \end{minipage} 144 | \item \textbf{\textsf{txmia} 字体.} 可以在 \pkg{txfonts} 宏包\footnote{不要使用 145 | \pkg{txfonts} 宏包, 详见 \ref{不要使用txfonts} 节.} 中找到. 146 | \end{itemize} 147 | 148 | 149 | 150 | \section{选项设置} 151 | \phyasgn 文档类的选项设置在导言区通过下面这种方式实现: 152 | \begin{csop} 153 | \small \textbackslash phyasgn\{ \meta{选项\,1} = \meta{值\,1}, \meta{选项\,2} = \meta{值\,2}, $\cdots$ \} 154 | \end{csop} 155 | %我们给出一个示例: 156 | %\begin{center}\fbox{\begin{minipage}{0.6\textwidth} 157 | %\includegraphics[width=\textwidth]{lipsum-ex.pdf} 158 | %\end{minipage}} 159 | %\label{lipsum-ex} 160 | %\end{center} 161 | 162 | \subsection{\texorpdfstring{设置姓名、\,学号}{设置姓名、学号}} 163 | \begin{csop} 164 | stuname = \meta{姓名}, 165 | stunum = \meta{学号} 166 | \end{csop} 167 | \noindent 分别用来设置姓名和学号, 显示在页眉中下方. 默认显示 168 | \begin{center} 169 | \fbox{\begin{minipage}{0.8\textwidth} 170 | \hfil{\scriptsize 姓名: \texttt{学生姓名}\quad 学号: {\sffamily xxxxx}11{\sffamily xxx}}\\[-12pt] 171 | \rule{\textwidth}{1pt}\\[-10pt]\mbox{} 172 | \end{minipage}} 173 | \end{center} 174 | 175 | \subsection{设置作业次数} 176 | \begin{csop} 177 | setasgnnum = \meta{次数} 178 | \end{csop} 179 | \noindent 用来设置作业次数, 显示在页眉中上方. 默认显示 180 | \begin{center} 181 | \fbox{\begin{minipage}{0.8\textwidth} 182 | \mbox{}\hfil{\large 第 \texttt{NULL} 次作业}\\[-2pt] 183 | \rule{\textwidth}{1pt}\\[-10pt]\mbox{} 184 | \end{minipage}} 185 | \end{center} 186 | 如果不需要设置次数, 可以使用 187 | \begin{csop} 188 | asgnnum = false 189 | \end{csop} 190 | \noindent 选项, 使得页眉中上方显示 191 | \begin{center} 192 | \fbox{\begin{minipage}{0.8\textwidth} 193 | \mbox{}\hfil{\large 课~~程~~作~~业}\\[-2pt] 194 | \rule{\textwidth}{1pt}\\[-10pt]\mbox{} 195 | \end{minipage}} 196 | \end{center} 197 | 198 | 199 | \subsection{设置课程名称} 200 | \begin{csop} 201 | classname = \meta{课程名称} 202 | \end{csop} 203 | \noindent 用来设置课程名称, 显示在页眉右下方. 默认显示 204 | \begin{center} 205 | \fbox{\begin{minipage}{0.8\textwidth} 206 | \mbox{}\hfill{\scriptsize 课程}\\[-12pt] 207 | \rule{\textwidth}{1pt}\\[-10pt]\mbox{} 208 | \end{minipage}} 209 | \end{center} 210 | 211 | 212 | 213 | \section{对于数学模式的一些定义} 214 | \subsection{直立体希腊字母} 215 | 本模板中, 使用直立体希腊字母的方式和 \pkg{upgreek} 宏包几乎一样, 都是采用 216 | \texttt{\textbackslash up\meta{希腊字母的英文拼写}} 这种输入方式, 217 | 如输入 ``|$\updelta$|'' 得到 ``$\updelta$''. 218 | 与 \pkg{upgreek} 宏包不同的是, 本模板的直立体希腊字母允许在文本环境中直接输入, 219 | 比如输入 ``|\upalpha 粒子|'' 可得到 ``$\upalpha$ 粒子''. 220 | 但是,\marginpar{\dbend} 如果使用了 \pkg{unicode-math} 宏包, 希腊字母整体的字体会被 221 | \pkg{unicode-math} 指定, 而且在正文中直接输入直立体希腊字母的命令会报错. 222 | 223 | {\footnotesize 本模板没有使用 \pkg{upgreek} 宏包作为数学环境下直立体希腊字母的支持, 224 | 而是使用了 |txmia| 字体作为解决方案. 其中一个原因是, 225 | 如果使用了 \pkg{siunitx} 宏包 (本模板未自动加载 \pkg{siunitx} 宏包). 226 | \pkg{siunitx} 会自动识别希腊字母的解决方案, 如果使用了 \pkg{upgreek} 宏包, 在单位中输入如 227 | ``|\si{k\ohm}|'' 等包含大写希腊字母的单位时, 会将字体切换为 Euler 或 Symbol 字体, 228 | 可能导致字体不统一的现象.}% (与用户习惯有关) 229 | 230 | \subsection{\texorpdfstring{常量、\,集合与算符}{常量、集合与算符}} 231 | \begin{itemize} 232 | \item |\e| 得到 $\e$, 只能在数学模式中使用. 233 | \item |\i| 和 |\j|\marginpar{\dbend} 在数学模式中分别得到 $\mathrm{i}$ 和 $\mathrm{j}$, 234 | 在文本环境中则会得到 \i, \j. 注意, 这个定义与 \pkg{hyperref} 宏包冲突, 使用了 235 | \pkg{hyperref} 宏包后, |\i| 和 |\j| 都不能出现在数学模式中. 236 | \item 数域: 如 |\C| 得到 $\mathbb{C}$.\marginpar{\dbend} 支持的命令包括 237 | $\mathbb{N}$, $\mathbb{Z}$, $\mathbb{Q}$, $\mathbb{R}$, $\mathbb{C}$,\footnote{若没有载入 238 | \pkg{unicode-math}, 则使用 \pkg{amsfonts} 的字体; 若载入 239 | \pkg{unicode-math}, 则使用 \pkg{unicode-math} 指定的字体. 240 | \pkg{unicode-math} 可以直接用 \texttt{\textbackslash symbb\{\meta{字母}\}}.} 241 | 分别为反斜杠加上对应的大写字母. 注意, 这些命令仍然与 \pkg{hyperref} 宏包冲突. 242 | %\item |\Re| 和 |\Im| 分别得到 $\Re$ 和 $\Im$. 243 | %$\oldRe$ 和 $\oldIm$ 因为不符合 ISO 标准, 应当放弃使用. 244 | %但是本模板定义了 |\oldRe| 和 |\oldIm| 命令分别与之对应. 245 | \item |\d|\marginpar{\dbend} 在数学环境中得到 $\dif$, 246 | 在文本环境中得到常规的 \TeX{} 重音符号 |\d| (例如 |\d{o}| 得到 \d{o}). 247 | 本模板还额外封装了 |\dt| 作为 $\dif t$ 的命令, 以便于快捷输入. 248 | |\d| 在数学模式中同样与 \pkg{hyperref} 宏包冲突. 249 | 250 | %{\footnotesize |\d| 是本模板最为巧妙的一个设计, 在分数中不会偏移, 251 | %在函数后的时候会自动在前面留下小空格, 比如 252 | %$\int_{t_1}^{t_2} L(q,\dot{q},t)\dif t$. 而且不会像 \pkg{physics} 宏包提供的 |\dd| 命令 253 | %一样在后面产生多余的空格.} 254 | \label{hyperref在数学模式中的一些问题} 255 | \end{itemize} 256 | \paragraph{注意事项} 257 | \pkg{hyperref} 宏包与很多宏包都会产生冲突,\marginpar{\dbend} 258 | 因此不建议在本模板中使用 \pkg{hyperref} 宏包. 259 | 260 | 261 | 262 | \section{其他配置} 263 | \subsection{列表环境} 264 | \phyasgn 对于 |enumerate| 和 |itemize| 环境的格式做出了修改: 265 | 266 | |enumerate|: 267 | \begin{center} 268 | \fbox{ 269 | \begin{minipage}{0.8\textwidth} 270 | \begin{enumerate} 271 | \item 一级列表 272 | \begin{enumerate} 273 | \item 二级列表 274 | \end{enumerate} 275 | \end{enumerate} 276 | \end{minipage}} 277 | \end{center} 278 | 279 | |itemize|: 280 | \begin{center} 281 | \fbox{ 282 | \begin{minipage}{0.8\textwidth} 283 | \begin{itemize} 284 | \item[\textbullet] 一级列表 285 | \begin{itemize} 286 | \item[\textendash] 二级列表 287 | \end{itemize} 288 | \end{itemize} 289 | \end{minipage}} 290 | \end{center} 291 | 可以直接把 |enumerate| 环境用作题目编号. 292 | 293 | \subsection{解与证明类环境} 294 | \phyasgn 设置了不依赖于定理类相关宏包的解与证明类环境, 用于满足解答的需要. 给出例子: 295 | \begin{flushleft} 296 | \begin{minipage}{\textwidth} 297 | \begin{minipage}{0.48\textwidth} 298 | \begin{Verbatim} 299 | \begin{sol} 300 | foo 301 | \end{sol} 302 | \end{Verbatim} 303 | \end{minipage} 304 | \hfill 305 | \fbox{\begin{minipage}{0.48\textwidth} 306 | \begin{sol} 307 | foo 308 | \end{sol} 309 | \end{minipage}} 310 | \end{minipage} 311 | \end{flushleft} 312 | 313 | \begin{flushleft} 314 | \begin{minipage}{\textwidth} 315 | \begin{minipage}{0.48\textwidth} 316 | \begin{Verbatim} 317 | \begin{pf} 318 | bar 319 | \end{pf} 320 | \end{Verbatim} 321 | \end{minipage} 322 | \hfill 323 | \fbox{\begin{minipage}{0.48\textwidth} 324 | \begin{pf} 325 | bar 326 | \end{pf} 327 | \end{minipage}} 328 | \end{minipage} 329 | \end{flushleft} 330 | 331 | 332 | 333 | \section{特殊需求} 334 | \subsection{更换西文字体} 335 | \phyasgn 文档类没有对西文字体做出额外的设置. 一个原因是, \TeX{} 原生的 {\lm Computer Modern} 336 | 字体\footnote{实际上, 在 \XeLaTeX{} 下使用的是 {\lm Latin Modern} 字体.} 337 | 足够优秀, 更主要的原因是, 如果使用了不同的字体支持方案, 有可能会产生大大小小的问题, 比如, 338 | \pkg{unicode-math} 宏包与 \pkg{bm} 宏包冲突, 339 | 前者使用 |\symbfit| 方式实现数学模式下加粗的斜体字母, 与后者的 |\bm| 命令冲突; 340 | \pkg{mathspec} 宏包又与 \pkg{unicode-math} 宏包冲突,\footnote{详见 341 | \pkg{unicode-math} 宏包手册. 可在终端 (\textsf{cmd}, \textsf{shell}) 342 | 中执行 ``\texttt{texdoc unicode-math}'' 查阅.} 等等. 343 | 344 | 如需自行设置西文正文字体, 推荐使用 \XeLaTeX{} 下的 \pkg{fontspec} 宏包. 不要使用 345 | \pkg{txfonts}, \pkg{pxfonts} 等宏包.\footnote{\pkg{txfonts} 与 \AmS 系列宏包 346 | 的使用顺序不当会造成字体设置失效.}\label{不要使用txfonts} 347 | 348 | 如需自行设置数学字体, 建议使用 \pkg{unicode-math} 宏包\footnote{不要使用 \pkg{txfonts} 宏包, 349 | 因为有一些数学符号的定义很容易冲突.} 350 | 或 \pkg{newtxmath} 宏包. 351 | 352 | \subsection{更换中文字体} 353 | 本模板的默认中文字体设置遵循 \pkg{ctex} 宏集的缺省设置. 例如, 对于 Windows 10 用户, 354 | 默认字体设置被 \pkg{ctex} 传递给 |fontset = windowsnew| 或 |fontset = fandol|; 355 | 对于 macOS 用户, 默认字体设置为 |fontset = macnew|; 356 | 对于 Linux 发行版用户, 默认字体设置为 |fontset = fandol|. 357 | 358 | 如需自行设置中文字体, 可以在导言区设置 359 | \begin{Verbatim} 360 | \phyasgn{ ctexfont = false } 361 | \end{Verbatim} 362 | 然后利用 \pkg{xeCJK} 提供的字体设置命令: 363 | \begin{Verbatim} 364 | \setCJKmainfont[ItalicFont=FZKTK.TTF,BoldFont=FZXBSK.TTF]{FZSSK.TTF} 365 | \setCJKsansfont[BoldFont=FZHTK.TTF]{FZXH1K.TTF} 366 | \setCJKmonofont{FZFSK.TTF} 367 | \end{Verbatim} 368 | 即可把中文字体设置为方正字库的字体系列.\footnote{{\FZSS 方正书宋}, 369 | {\FZKT 方正楷体}, {\FZFS 方正仿宋}, {\FZHT 方正黑体}可以免费商用.} 370 | 371 | 372 | \section{History \& Issues} 373 | \begin{itemize} 374 | \item Version 0.1 $\upbeta$, 2021 年 9 月 12 日. 375 | \begin{itemize} 376 | \item 基于 \textsf{ctexart} 的 \phyasgn. 仅由作者本人进行了一些测试, 未公开. 377 | \item 部分数学模式的定义在 \pkg{hyperref} 宏包中报错, 是 \pkg{hyperref} 的兼容性引起的. 378 | \item 在 0.1 $\upbeta$ 版本中, 暂时还未对代码环境做出配置. 379 | \item 0.1 $\upbeta$ 版本中还对 $\oldRe$ 和 $\oldIm$ 这两个符号做出了修改, 把 |\Re| 和 |\Im| 380 | 分别定义为 $\operatorname{Re}$ 和 $\operatorname{Im}$, 但是这种修改在使用 \pkg{unicode-math} 381 | 的情况下会失效. 此外, 还对 $\mathrm{i}$ 和 $\mathrm{j}$ 的定义做出了修改, 但是在 \pkg{unicode-math} 382 | 下也会失效. 383 | \end{itemize} 384 | \item Version 0.2 $\upbeta$, 2021 年 9 月 30 日. 385 | \begin{itemize} 386 | \item 基于 \textsf{article} 重构了 \phyasgn. 是公开发布的第一版. 387 | \item 暂时放弃对 \pkg{unicode-math} 的支持, 后续版本中会把对 \pkg{unicode-math} 的支持加入进来. 388 | 如需更改数学字体, 建议使用 \pkg{newtxmath}. 389 | \item 仍未对代码环境做出配置. 390 | \item 不推荐在本模板中使用 \pkg{physics} 宏包. 391 | \end{itemize} 392 | 393 | \end{itemize} 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | \end{document} --------------------------------------------------------------------------------