diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/hfutexam/hfutexam.cls')
-rw-r--r-- | Master/texmf-dist/tex/latex/hfutexam/hfutexam.cls | 267 |
1 files changed, 114 insertions, 153 deletions
diff --git a/Master/texmf-dist/tex/latex/hfutexam/hfutexam.cls b/Master/texmf-dist/tex/latex/hfutexam/hfutexam.cls index 81315269173..a8eb76dae03 100644 --- a/Master/texmf-dist/tex/latex/hfutexam/hfutexam.cls +++ b/Master/texmf-dist/tex/latex/hfutexam/hfutexam.cls @@ -7,37 +7,26 @@ % 编译模式: XeLaTeX % 你可以任意修改或再次分发该文件 \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{hfutexam}[2022/12/07 v1.6 HFUTExam document class by Zhang Shenxing] -% 文档选项 shijuan, datizhi, cankaodaan, simple -\newif\ifHFUT@ShiJuan -\newif\ifHFUT@DaTiZhi -\newif\ifHFUT@CanKaoDaAn -\newif\ifHFUT@Simple -\newcommand{\setalltypefalse}{% - \HFUT@ShiJuanfalse% - \HFUT@DaTiZhifalse% - \HFUT@CanKaoDaAnfalse% - \HFUT@Simplefalse -} -\setalltypefalse\HFUT@ShiJuantrue -\DeclareOption{datizhi}{\setalltypefalse\HFUT@DaTiZhitrue} -\DeclareOption{cankaodaan}{\setalltypefalse\HFUT@CanKaoDaAntrue} -\DeclareOption{simple}{\setalltypefalse\HFUT@Simpletrue} -% 文档选项 nofangzheng -\newif\ifHFUT@Fandol\HFUT@Fandoltrue -\DeclareOption{nofangzheng}{\HFUT@Fandolfalse} +\ProvidesClass{hfutexam}[2023/03/10 v1.7 HFUTExam document class by Zhang Shenxing] +% 文档选项 +\newif\ifhfut@ShiJuan\hfut@ShiJuantrue +\newif\ifhfut@DaTiZhi\hfut@DaTiZhifalse +\newif\ifhfut@Simple\hfut@Simplefalse +\newif\ifhfut@Fandol\hfut@Fandoltrue +\DeclareOption{datizhi}{\hfut@ShiJuanfalse\hfut@DaTiZhitrue\hfut@Simplefalse} +\DeclareOption{cankaodaan}{\hfut@ShiJuanfalse\hfut@DaTiZhitrue\hfut@Simplefalse} +\DeclareOption{simple}{\hfut@ShiJuanfalse\hfut@DaTiZhifalse\hfut@Simpletrue } +\DeclareOption{nofangzheng}{\hfut@Fandolfalse} % 默认使用方正字体 % 基于 ctexart 文档类 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexart}} \ProcessOptions\relax -\ifHFUT@Simple\else\PassOptionsToClass{twocolumn}{ctexart}\fi +\ifhfut@Simple\else\PassOptionsToClass{twocolumn}{ctexart}\fi \ProcessOptions\relax \LoadClass[12pt,oneside]{ctexart} % 页面设置 -\RequirePackage{amsmath,amssymb,amsthm} -\RequirePackage{graphicx} -\RequirePackage{enumitem} -\RequirePackage{geometry} -\ifHFUT@Simple +\RequirePackage{amsmath,amssymb,amsthm, graphicx, enumitem, fancyhdr, lastpage, etoolbox, geometry, tikz, zref-savepos} +\RequirePackage[normalem]{ulem} +\ifhfut@Simple \geometry{a4paper,scale=0.8} \else \geometry{ @@ -46,24 +35,33 @@ left=3.17cm, right=3.17cm, voffset=2.2cm, - headheight=77pt, + headheight=78pt, headsep=12pt, footskip=1cm } + \setlength\columnsep{0.8cm} % 分栏间距 + \columnseprule=0.5pt % 分栏线宽度 \fi % 试卷信息 -\newcommand{\BiaoTi}[1]{\gdef\HFUT@BiaoTi{#1}} -\newcommand{\XueNian}[2]{\gdef\HFUT@XueNians{#1}\gdef\HFUT@XueNiane{#2}} -\newcommand{\XueQi}[1]{\gdef\HFUT@XueQi{#1}} -\newcommand{\KeChengDaiMa}[1]{\gdef\HFUT@KeChengDaiMa{#1}} -\newcommand{\KeChengMingCheng}[1]{\gdef\HFUT@KeChengMingCheng{#1}} -\newcommand{\XueFen}[1]{\gdef\HFUT@XueFen{#1}} -\newcommand{\KeChengXingZhi}[1]{\gdef\HFUT@KeChengXingZhi{#1}} -\newcommand{\KaoShiXingShi}[1]{\gdef\HFUT@KaoShiXingShi{#1}} -\newcommand{\ZhuanYeBanJi}[1]{\gdef\HFUT@ZhuanYeBanJi{#1}} -\newcommand{\KaoShiRiQi}[1]{\gdef\HFUT@KaoShiRiQi{#1}} -\newcommand{\MingTiJiaoShi}[1]{\gdef\HFUT@MingTiJiaoShi{#1}} -\newcommand{\XiZhuRenQianMing}[1]{\gdef\HFUT@XiZhuRenQianMing{#1}} +\newcommand{\hfutstretch}{1.5} % 下划线内两侧空格长度除以条目之间空格长度 +\newcommand{\hfutul}[1]{\uline{\hspace{\stretch{\hfutstretch}}#1\hspace{\stretch{\hfutstretch}}}} +\newcommand{\hfutrule}[1]{\rule{#1}{0mm}} +\newcommand{\hfutboxyes}{{\raisebox{-0.5mm}{\LARGE$\checkmark\hspace{-18pt}\square$}}} +\newcommand{\hfutboxno}{{\raisebox{-0.5mm}{\LARGE$\square$}}} +\newcommand{\XueNian}[2]{\gdef\hfut@XueNian{{\hfutFontTimes #1}~{\hfutFontTimes #2}}} +\newcommand{\BiaoTi}[1]{\gdef\hfut@BiaoTi{#1}} +\newcommand{\XueQi}[1]{\gdef\hfut@XueQi{#1}} +\newcommand{\XueFen}[1]{\gdef\hfut@XueFen{#1}} +\newcommand{\KeChengXingZhi}[1]{\gdef\hfut@KeChengXingZhi{#1}} +\newcommand{\KaoShiXingShi}[1]{\gdef\hfut@KaoShiXingShi{#1}} +\newcommand{\KeChengDaiMa}[1]{\gdef\hfut@KeChengDaiMa{#1}} +\newcommand{\KeChengMingCheng}[1]{\gdef\hfut@KeChengMingCheng{#1}} +\newcommand{\ZhuanYeBanJi}[1]{\gdef\hfut@ZhuanYeBanJi{#1}} +\newcommand{\KaoShiRiQi}[1]{\gdef\hfut@KaoShiRiQi{#1}} +\newcommand{\MingTiJiaoShi}[1]{\gdef\hfut@MingTiJiaoShi{#1}} +\newcommand{\XiZhuRenQianMing}[2][5em]{\gdef\hfut@XiZhuRenQianMing{% + \tikz[overlay]\node at (1.5,0.22) {\ifx#2\@empty\else\includegraphics[width=#1]{#2}\fi};% + \uline{\hspace{0.5em}\hfutrule{#1}\hspace{0.5em}}}} \BiaoTi{} \XueNian{}{} \XueQi{} @@ -77,144 +75,110 @@ \MingTiJiaoShi{} \XiZhuRenQianMing{} % 粗字体设定 -\newfontfamily\timesnewroman[AutoFakeBold={1.5}]{Times New Roman} % 粗罗马 -\ifHFUT@Fandol - \setCJKfamilyfont{titlesongti}[AutoFakeBold={1.5}]{FZXiaoBiaoSong-B05S} % 粗方正小标宋 - \newfontfamily\entitlesongti[AutoFakeBold={1.5}]{FZXiaoBiaoSong-B05S} - \setCJKfamilyfont{titlefangsong}[AutoFakeBold={1.5}]{FZFangSong-Z02S} % 粗方正仿宋 - \newfontfamily\entitlefangsong[AutoFakeBold={1.5}]{FZFangSong-Z02S} +\newfontfamily\hfutFontTimes[AutoFakeBold={3}]{Times New Roman} % 粗罗马 +\ifhfut@Fandol + \setCJKfamilyfont{hfutFontTitle}[AutoFakeBold={3}]{FZXiaoBiaoSong-B05S} % 粗方正小标宋 + \newfontfamily\hfutFontTitleEn[AutoFakeBold={3}]{FZXiaoBiaoSong-B05S} + \setCJKfamilyfont{hfutFontHead}[AutoFakeBold={3}]{FZFangSong-Z02S} % 粗方正仿宋 + \newfontfamily\hfutFontHeadEn[AutoFakeBold={3}]{FZFangSong-Z02S} \else - \setCJKfamilyfont{titlesongti}[AutoFakeBold={4}]{NSimSun} % 粗新宋体 - \newfontfamily\entitlesongti[AutoFakeBold={4}]{NSimSun} - \setCJKfamilyfont{titlefangsong}[AutoFakeBold={1.5}]{FangSong} % 粗仿宋 - \newfontfamily\entitlefangsong[AutoFakeBold={1.5}]{FangSong} + \setCJKfamilyfont{hfutFontTitle}[AutoFakeBold={3}]{NSimSun} % 粗新宋体 + \newfontfamily\hfutFontTitleEn[AutoFakeBold={3}]{NSimSun} + \setCJKfamilyfont{hfutFontHead}[AutoFakeBold={3}]{FangSong} % 粗仿宋 + \newfontfamily\hfutFontHeadEn[AutoFakeBold={3}]{FangSong} \fi -\newcommand{\titlesongti}{\entitlesongti\CJKfamily{titlesongti}} -\newcommand{\titlefangsong}{\entitlefangsong\CJKfamily{titlefangsong}} -\setCJKfamilyfont{xinsongti}[AutoFakeBold={1.5}]{NSimSun} % 粗新宋体 -\newfontfamily\enxinsongti[AutoFakeBold={1.5}]{NSimSun} -\newcommand{\xinsongti}{\enxinsongti\CJKfamily{xinsongti}} -\setCJKfamilyfont{cusongti}[AutoFakeBold={1.5}]{SimSun} % 粗宋体 -\newcommand{\cusongti}{\CJKfamily{cusongti}} +\newcommand{\hfutFontTitle}{\CJKfamily{hfutFontTitle}\hfutFontTitleEn} +\newcommand{\hfutFontHead}{\hfutFontHeadEn\CJKfamily{hfutFontHead}} % 重新设定字体大小 -\renewcommand{\LARGE}{\fontsize{21}{21}} -\renewcommand{\large}{\fontsize{14}{14}} -\renewcommand{\normalsize}{\fontsize{12}{12}} -\renewcommand{\small}{\fontsize{10.5}{10.5}} +\renewcommand{\LARGE}{\fontsize{21pt}{25.2pt}} +\renewcommand{\large}{\fontsize{14pt}{21pt}} +\renewcommand{\small}{\fontsize{10.5pt}{12.6pt}} % 缩进 \setlength{\parindent}{0em} \renewcommand{\indent}{\hspace*{2em}} -% 分栏 -\setlength\columnsep{0.8cm} % 分栏间距 -\columnseprule=0.5pt % 分栏线宽度 % 页眉页脚 -\RequirePackage{fancyhdr} -\RequirePackage{lastpage} -\RequirePackage{etoolbox} -\renewcommand\headrulewidth{0.5pt} % 页眉线宽度 -\renewcommand\footrulewidth{0.5pt} % 页脚线宽度 \pagestyle{fancy} \fancyhf{} -\newcommand{\boxyes}{{\raisebox{-0.5mm}{\LARGE$\checkmark\hspace{-1.2em}\square$}}} -\newcommand{\boxno}{{\raisebox{-0.5mm}{\LARGE$\square$}}} -\newcommand{\filltitle}[2]{\uline{\makebox[#1]{#2}}} -\newlength{\ltitle} -\settowidth{\ltitle}{\HFUT@BiaoTi} -\ifHFUT@ShiJuan%试卷页眉页脚 - \fancyhead[C]{% - \hfill\bfseries\LARGE\titlesongti\ifdimcomp\ltitle>{0.5\linewidth}{\HFUT@BiaoTi}{\makebox[0.5\linewidth][s]{\HFUT@BiaoTi}}\hfill% - \large\cusongti 共\filltitle{1.5em}{\timesnewroman\pageref{LastPage}}页第\filltitle{1.5em}{\timesnewroman\thepage}页\\\vspace{5pt}% - \timesnewroman\HFUT@XueNians\titlefangsong~\timesnewroman\HFUT@XueNiane\titlefangsong 学年第\filltitle{2em}{\HFUT@XueQi}学期\hfill% - 课程代码\filltitle{5em}{\HFUT@KeChengDaiMa}\hfill% - 课程名称\filltitle{12em}{\HFUT@KeChengMingCheng}\hfill% - 学分\filltitle{2.5em}{\HFUT@XueFen}\hfill% - 课程性质: 必修\ifdefstring{\HFUT@KeChengXingZhi}{必修}{\boxyes}{\boxno}% - 选修\ifdefstring{\HFUT@KeChengXingZhi}{选修}{\boxyes}{\boxno}% - 限修\ifdefstring{\HFUT@KeChengXingZhi}{限修}{\boxyes}{\boxno}\hfill% - 考试形式: 开卷\ifdefstring{\HFUT@KaoShiXingShi}{开卷}{\boxyes}{\boxno}% - 闭卷\ifdefstring{\HFUT@KaoShiXingShi}{闭卷}{\boxyes}{\boxno}\\\vspace{2pt}% - 专业班级(教学班)\filltitle{11em}{\HFUT@ZhuanYeBanJi}\hfill% - 考试日期\filltitle{16em}{\HFUT@KaoShiRiQi}\hfill% - 命题教师\fillblank[5.5em][0.6cm]{\HFUT@MingTiJiaoShi}\hfill% - 系(所或教研室)主任审批签名% - \begin{tikzpicture}[overlay,xshift=3.25em,yshift=0.15cm]% - \node at (0,0) {\ifx\HFUT@XiZhuRenQianMing\@empty\else\includegraphics[height=0.9cm]{\HFUT@XiZhuRenQianMing}\fi};% - \end{tikzpicture}% - \filltitle{6.5em}{}\vspace{4pt}% +\newcommand{\hfutpage}{{\hfutFontTimes\thepage}} +\newcommand{\hfutlastpage}{{\hfutFontTimes\pageref*{LastPage}}} +\ifhfut@ShiJuan % 试卷页眉页脚 + \renewcommand\headrulewidth{0.5pt} + \renewcommand\footrulewidth{0.5pt} + \setCJKfamilyfont{hfutFontSimSun}[AutoFakeBold={3}]{SimSun} % 粗宋体 + \fancyhead[C]{\bfseries\large\hfutFontHead\hfutrule{6em} + \hfill\makebox[280mm][s]{\LARGE\hfutFontTitle~\hfut@BiaoTi~} + \hfill{\CJKfamily{hfutFontSimSun} 共\uline{\makebox[1.5em]{\hfutlastpage}}页第\uline{\makebox[1.5em]{\hfutpage}}页} + + \vspace{6pt}% + \hfut@XueNian{}学年第\uline{\hfill\hfut@XueQi\hfill}学期 + \hfill 课程代码\hfutul{\hfut@KeChengDaiMa} + \hfill 课程名称\hfutul{\hfut@KeChengMingCheng} + \hfill 学分\uline{\hfill\hfut@XueFen\hfill} + \hfill 课程性质: % + 必修\ifdefstring{\hfut@KeChengXingZhi}{必修}{\hfutboxyes}{\hfutboxno}% + 选修\ifdefstring{\hfut@KeChengXingZhi}{选修}{\hfutboxyes}{\hfutboxno}% + 限修\ifdefstring{\hfut@KeChengXingZhi}{限修}{\hfutboxyes}{\hfutboxno} + \hfill 考试形式: % + 开卷\ifdefstring{\hfut@KaoShiXingShi}{开卷}{\hfutboxyes}{\hfutboxno}% + 闭卷\ifdefstring{\hfut@KaoShiXingShi}{闭卷}{\hfutboxyes}{\hfutboxno} + + \vspace{6pt}% + 专业班级(教学班)\hfutul{\hfut@ZhuanYeBanJi} + \hfill 考试日期\hfutul{\hfut@KaoShiRiQi} + \hfill 命题教师\hfutul{\hfut@MingTiJiaoShi} + \hfill 系(所或教研室)主任审批签名\hfut@XiZhuRenQianMing% } \fancyfoot[C]{\small\vspace{0.5\baselineskip}命题教师注意事项: 1. 主考教师必须于考试一周前将“试卷A”、“试卷B”经教研室主任审批签字后送教务科印刷。\hspace{1em}% 2. 请命题教师用黑色水笔工整地书写题目或用A4纸横式打印贴在试卷版芯中。 } \fi -\ifHFUT@DaTiZhi%答题纸页眉页脚 - \fancyhead[C]{% - \bfseries\LARGE\xinsongti\scalebox{2.0}[1.0]{% - \ifdimcomp\ltitle>{0.35\linewidth}{\HFUT@BiaoTi}{\makebox[0.35\linewidth][s]{\HFUT@BiaoTi}}% - }\\\vspace{8pt}% - \large\timesnewroman\HFUT@XueNians\titlefangsong~\timesnewroman\HFUT@XueNiane\titlefangsong 学年第\filltitle{2em}{\HFUT@XueQi}学期\hfill% - 课程代码\filltitle{6.5em}{\HFUT@KeChengDaiMa}\hfill% - 课程名称\filltitle{13em}{\HFUT@KeChengMingCheng}\hfill% - 命题教师\filltitle{7em}{\HFUT@MingTiJiaoShi}\hfill% - 系主任审批% - \begin{tikzpicture}[overlay,xshift=3.5em,yshift=0.2cm]% - \node at (0,0) {\ifx\HFUT@XiZhuRenQianMing\@empty\else\includegraphics[height=0.9cm]{\HFUT@XiZhuRenQianMing}\fi};% - \end{tikzpicture}% - \filltitle{7em}{}\\\vspace{2pt}% - 教学班级\filltitle{10.5em}{}\hfill% - 学生姓名\fillblank[8em][0.6cm]{}\hfill% - 学号\filltitle{8em}{}\hfill% - 考试日期\filltitle{16em}{\HFUT@KaoShiRiQi}\hfill% - 成绩\filltitle{6.3em}{}\vspace{4pt}% - } - \fancyfoot[C]{\small\vspace{0.5\baselineskip} - 第 \timesnewroman\thepage 页~共 \timesnewroman\pageref{LastPage} 页 +\ifhfut@DaTiZhi % 答题纸页眉页脚 + \renewcommand\headrulewidth{0.5pt} + \renewcommand\footrulewidth{0.5pt} + \fancyhead[C]{\bfseries\large\hfutFontHead + \makebox[\linewidth][s]{\LARGE\hfutFontTitle~\hfut@BiaoTi~} + + \vspace{6pt}% + \hfut@XueNian{}学年第\uline{\hfill\hfut@XueQi\hfill}学期 + \hfill 课程代码\hfutul{\hfut@KeChengDaiMa} + \hfill 课程名称\hfutul{\hfut@KeChengMingCheng} + \hfill 命题教师\hfutul{\hfut@MingTiJiaoShi} + \hfill 系(所或教研室)主任审批签名\hfut@XiZhuRenQianMing% + + \vspace{6pt}% + 教学班级\hfutul{\hfutrule{10em}} + \hfill 学生姓名\hfutul{\hfutrule{10em}} + \hfill 学号\hfutul{\hfutrule{8em}} + \hfill 考试日期\hfutul{\hfut@KaoShiRiQi} + \hfill 成绩\hfutul{\hfutrule{6em}}% } + \fancyfoot[C]{\small\vspace{0.5\baselineskip}第~\hfutpage~页~~共~\hfutlastpage~页} \fi -\ifHFUT@CanKaoDaAn%参考答案页眉页脚 - \fancyhead[C]{% - \bfseries\LARGE\titlesongti\ifdimcomp\ltitle>{0.6\linewidth}{\HFUT@BiaoTi}{\makebox[0.6\linewidth][s]{\HFUT@BiaoTi}}\\\vspace{5pt}% - \large\timesnewroman\HFUT@XueNians\titlefangsong~\timesnewroman\HFUT@XueNiane\titlefangsong 学年第\filltitle{2em}{\HFUT@XueQi}学期\hfill% - 课程代码\filltitle{6.5em}{\HFUT@KeChengDaiMa}\hfill% - 课程名称\filltitle{13em}{\HFUT@KeChengMingCheng}\hfill% - 命题教师\filltitle{7em}{\HFUT@MingTiJiaoShi}\hfill% - 系主任审批% - \begin{tikzpicture}[overlay,xshift=3.5em,yshift=0.2cm]% - \node at (0,0) {\ifx\HFUT@XiZhuRenQianMing\@empty\else\includegraphics[height=0.9cm]{\HFUT@XiZhuRenQianMing}\fi};% - \end{tikzpicture}% - \filltitle{7em}{}\\\vspace{2pt}% - 教学班级\filltitle{10.5em}{}\hfill% - 学生姓名\fillblank[8em][0.6cm]{}\hfill% - 学号\filltitle{8em}{}\hfill% - 考试日期\filltitle{16em}{\HFUT@KaoShiRiQi}\hfill% - 成绩\filltitle{6.3em}{}\vspace{4pt}% - } - \fancyfoot[C]{\small\vspace{0.5\baselineskip} - 第 \timesnewroman\thepage 页~共 \timesnewroman\pageref{LastPage} 页 - } -\fi -\ifHFUT@Simple%简单模式页眉页脚 +\ifhfut@Simple % 简单模式页眉页脚 + \RequirePackage{hyperref} \renewcommand\headrulewidth{0pt} \renewcommand\footrulewidth{0pt} \renewcommand{\maketitle}{% - \begin{center} - \bfseries\LARGE\titlesongti% - \ifdimcomp\ltitle>{0.9\linewidth}{\HFUT@BiaoTi}{\makebox[0.9\linewidth][s]{\HFUT@BiaoTi}}\\% - \makebox[0.75\linewidth]{\large\timesnewroman\HFUT@XueNians\titlefangsong~\timesnewroman\HFUT@XueNiane\titlefangsong 学年% - 第{\HFUT@XueQi}学期\hfill\HFUT@KeChengMingCheng(\HFUT@KeChengDaiMa)} + \pdfbookmark{\hfut@BiaoTi}{hfutBiaoTi\thepage} + \begin{center}\bfseries + \makebox[\linewidth][s]{\LARGE\hfutFontTitle~\hfut@BiaoTi~} + + \vspace{6pt}% + \makebox[\linewidth]{\large\hfutFontHead~ + \hfill \hfut@XueNian{}学年第\hfut@XueQi{}学期 + \hspace{\stretch{3}} \hfut@KeChengMingCheng(\hfut@KeChengDaiMa) + \hfill~ + } \end{center} } - \fancyfoot[C]{\small\vspace{0.5\baselineskip} - 第 \timesnewroman\thepage 页~共 \timesnewroman\pageref{LastPage} 页 - } + \fancyfoot[C]{\small{}第~\hfutpage~页~~共~\hfutlastpage~页} \fi % 题号加粗 \renewcommand{\labelenumi}{{\bfseries \theenumi.}} % 题干 \newcommand\tigan[1]{\noindent{\large\textbf{#1}}} % 打分栏 -\RequirePackage{tikz} -\usetikzlibrary{overlay-beamer-styles} \newcommand\scorebox{% \vspace{0.5\baselineskip}\noindent% \begin{tikzpicture}[overlay,xshift=13.8cm,yshift=-1.6cm]% @@ -240,8 +204,7 @@ \newlength{\lquar} \newlength{\lhalf} \newlength{\lfull} -\RequirePackage[normalem]{ulem} -\NewDocumentCommand\fillblank{O{3.5cm} O{0.5cm} m}{% +\NewDocumentCommand\fillblank{O{35mm} O{5mm} m}{% \settodepth{\ltemp}{#3}% \uline{\makebox[#1]{\rule{0pt}{#2}\raisebox{\ltemp}{#3}}}% } @@ -298,9 +261,7 @@ \draw (0.9,0.5) node {#2} (0.9,1.5) node {\textbf{#1}};% \end{tikzpicture}% } -% 得分点命令 -% https://ask.latexstudio.net/ask/question/7557.html -\RequirePackage{zref-savepos} +% 得分点命令 https://ask.latexstudio.net/ask/question/7557.html \makeatletter \ExplSyntaxOn \zref@require@unique |