模板为什么放在texworks上能被编译,在texstudio上就不行

模板为什么放在texworks上能被编译,在texstudio上就不行

请提供模板链接或者压缩包文件,同时建议你检查TeXStudio的配置,是否使用了正确的编译命令。

下面的问题都将基于该链接下载的压缩文件。

解压之可以得到一份117行的template_exam_A_utf8.tex文件

%

% 说明:使用 xelatex 编译,在 texlive 2017 中编译通过

%

\documentclass[UTF8]{ctexart}

\usepackage[a4paper,top=2.0cm,bottom=2.5cm,left=2.8cm,right=2.8cm,%

includehead,includefoot]{geometry}

\usepackage{amsmath,amssymb,amsfonts,bm}

\usepackage{graphicx,xcolor}

\usepackage[xetex,colorlinks,linkcolor=blue]{hyperref}

\usepackage{makecell,interfaces-makecell}

\usepackage{calc}

\renewcommand{\baselinestretch}{1.3}

%%%%% ===== 自定义命令 ===========================================================

\newcommand{\ul}[1]{\underline{\makebox[#1]{}}}

\newcommand{\ull}[2]{\underline{\makebox[#1]{\kaishu #2}}}

\newcommand{\ulaa}[1]{\underline{\makebox[3em]{\Large\textcircled{\normalsize #1}}}}

\newcommand{\dis}{\displaystyle}

\pagestyle{plain}

\begin{document}

\zihao{-4} % 小四号字体

%%%%% ===== 试卷头 ===============================================================

\begin{center}

{\heiti\LARGE 华东师范大学期末试卷 (A)} \bigskip

$20xx-20xx$ 学年第 X 学期

\bigskip\bigskip

%%%%% ===== 课程信息,包括课程名,课程性质等

\setlength{\tabcolsep}{1mm}

\renewcommand{\arraystretch}{1.4}

\begin{tabular}{p{7.5cm}p{6.5cm}}

课程名称:\ull{4.0cm}{\zihao{4} 数~值~分~析} & \\

学生姓名:\ul{4.0cm} &

学\hspace{10.5mm}号:\ul{4.0cm} \\

专\hspace{2em}业:\ull{4.0cm}{数学与应用数学} &

年级/班级:\ull{4.0cm}{20xx级} \\

课程性质:\ {\kaishu 专业X修} \\

\end{tabular}\smallskip

%%%%% ===== 得分表,其中 numexer 表示题号个数,这里设为 8,可根据实际需要修改,其他可以不用修改。

\newcounter{numexer}\setcounter{numexer}{8} % 题号个数,这里为 8

\newcounter{numcol}\setcounter{numcol}{\value{numexer}+2}

\newlength{\cellwidth}\setlength{\cellwidth}{\textwidth*\ratio{0.6pt}{\value{numexer} pt}}

\begin{tabular}{|*{\thenumcol}{c|}} \hline

\repeatcell{\thenumexer}{rows=1,text=\makebox[\cellwidth]{\zhnumber{\column}}}

& \makebox[0.12\textwidth]{总分} &\makebox[0.16\textwidth]{阅卷人签名} \\ \hline

\repeatcell{\thenumcol}{rows=1,end=\\ \hline} \\ \hline

\end{tabular}

\end{center}

\medskip

\noindent\dotfill

\medskip

\linespread{1.5}\selectfont

\noindent{\heiti 一、填充题} (每空 2 分,共 24 分)

\newcounter{forlist}

\begin{list}{\arabic{forlist}.}

{\setlength{\topsep}{2mm}

\setlength{\listparindent}{0pt}

\setlength{\labelsep}{5pt}

\setlength{\itemsep}{0.8em}

\setlength{\parsep}{5pt}

\usecounter{forlist}}

\item

十进制数与二进制数的转换: $(123)_{10}= (\ulaa{1})_2$,

$(110)_2 = (\ulaa{2})_{10}$。

\item

十进制数与二进制数的转换: $(123)_{10}= (\ulaa{3})_2$,

$(110)_2 = (\ulaa{4})_{10}$。

\item

十进制数与二进制数的转换: $(123)_{10}= (\ulaa{5})_2$,

$(110)_2 = (\ulaa{6})_{10}$。

\end{list}

\newpage

\linespread{1.3}\selectfont

\begin{list}{\heiti\Chinese{forlist}、}

{\setlength{\topsep}{1mm}

\setlength{\listparindent}{0pt}

\setlength{\itemsep}{2em}

\setlength{\labelsep}{0pt}

\usecounter{forlist}

\setcounter{forlist}{1}}

\item (15 分) % ========================================================

设 $x_0,x_1,\ldots,x_n$ 为互异节点,求证: \\[1ex]

(1)$\dis\sum\limits_{j=0}^n x_j^k l_j(x) \equiv x^k $\quad ($k=0,1,\ldots,n$); \\

(2)$\dis\sum\limits_{j=0}^n (x_j-x)^k l_j(x) \equiv 0$\quad ($k=0,1,\ldots,n$)。

\item (15 分) % ========================================================

设 $x_0,x_1,\ldots,x_n$ 为互异节点,求证: \\[1ex]

(1)$\dis\sum\limits_{j=0}^n x_j^k l_j(x) \equiv x^k $\quad ($k=0,1,\ldots,n$); \\

(2)$\dis\sum\limits_{j=0}^n (x_j-x)^k l_j(x) \equiv 0$\quad ($k=0,1,\ldots,n$)。

\item (15 分) % ========================================================

设 $x_0,x_1,\ldots,x_n$ 为互异节点,求证: \\[1ex]

(1)$\dis\sum\limits_{j=0}^n x_j^k l_j(x) \equiv x^k $\quad ($k=0,1,\ldots,n$); \\

(2)$\dis\sum\limits_{j=0}^n (x_j-x)^k l_j(x) \equiv 0$\quad ($k=0,1,\ldots,n$)。

\end{list}

\end{document}按照文档说明: 使用xelatex在TeXLive2017下可以顺利编译。但当我们用TeXLive2024在命令行下用xelatex编译时却会发现得到如下错误,无法编译成功:

! Package etoolbox Error: \scr@load@hook undefined.

See the etoolbox package documentation for explanation.

Type H for immediate help.

...

l.55 \renewrobustcmd*\scr@load@hook

[2]{%

?通过反向检索该错误,我们不难发现这是因为interfaces-makecell宏包因为过期在TeXLive2021中已经正式弃用,这导致了下面的代码中的\repeatcell失效:

\begin{tabular}{|*{\thenumcol}{c|}} \hline

\repeatcell{\thenumexer}{rows=1,text=\makebox[\cellwidth]{\zhnumber{\column}}}

& \makebox[0.12\textwidth]{总分} &\makebox[0.16\textwidth]{阅卷人签名} \\ \hline

\repeatcell{\thenumcol}{rows=1,end=\\ \hline} \\ \hline

\end{tabular}参考了以下两个链接:https://tex.stackexchange.com/questions/625226/alternative-to-repeatcell-from-the-interfaces-package-since-texlive-2021https://tex.stackexchange.com/questions/297919/create-tabular-depending-on-counter

我简单封装了一个命令\scorebox用于绘制得分框(不建议题号数量过大)

\ExplSyntaxOn

\NewDocumentCommand{\scorebox}{m}

{

\newcounter{numexer}\setcounter{numexer}{#1}

\newcounter{numcol}\setcounter{numcol}{\value{numexer}+2}

\dim_new:N \cellwidth

\fp_set:Nn \l_tmpa_fp { .6 * \textwidth / \value{numexer} }

\dim_set:Nn \cellwidth { \fp_to_dim:N \l_tmpa_fp }

\begin{tabular}{|*{\int_eval:n { #1 + 2 }}{c|}} \hline

\int_zero:N \g_tmpa_int

\prg_replicate:nn { #1 } {%

\int_gincr:N \g_tmpa_int \makebox[\cellwidth]{\zhnumber{\int_to_arabic:n { \g_tmpa_int }}} & } \makebox[.12\textwidth]{总分} & \makebox[.16\textwidth]{阅卷人签名}\\

\hline

\prg_replicate:nn { \int_eval:n { #1 + 1 } } {&}\\

\hline

\end{tabular}

}

\ExplSyntaxOff至此..在TeXLive2024下可以编译...

\documentclass[UTF8]{ctexart}

\usepackage[a4paper,top=2.0cm,bottom=2.5cm,left=2.8cm,right=2.8cm,includehead,includefoot]{geometry}

\usepackage{amsmath,amssymb,amsfonts,bm}

\usepackage{graphicx,xcolor}

\usepackage[xetex,colorlinks,linkcolor=blue]{hyperref}

\usepackage{makecell}

% \usepackage{interfaces-makecell}

\usepackage{calc}

\renewcommand{\baselinestretch}{1.3}

%%%%% ===== 自定义命令 ===========================================================

\newcommand{\ul}[1]{\underline{\makebox[#1]{}}}

\newcommand{\ull}[2]{\underline{\makebox[#1]{\kaishu #2}}}

\newcommand{\ulaa}[1]{\underline{\makebox[3em]{\Large\textcircled{\normalsize #1}}}}

\newcommand{\dis}{\displaystyle}

% https://tex.stackexchange.com/questions/625226/alternative-to-repeatcell-from-the-interfaces-package-since-texlive-2021

% https://tex.stackexchange.com/questions/297919/create-tabular-depending-on-counter

\ExplSyntaxOn

\NewDocumentCommand{\scorebox}{m}

{

\newcounter{numexer}\setcounter{numexer}{#1}

\newcounter{numcol}\setcounter{numcol}{\value{numexer}+2}

\dim_new:N \cellwidth

\fp_set:Nn \l_tmpa_fp { .6 * \textwidth / \value{numexer} }

\dim_set:Nn \cellwidth { \fp_to_dim:N \l_tmpa_fp }

\begin{tabular}{|*{\int_eval:n { #1 + 2 }}{c|}} \hline

\int_zero:N \g_tmpa_int

\prg_replicate:nn { #1 } {%

\int_gincr:N \g_tmpa_int \makebox[\cellwidth]{\zhnumber{\int_to_arabic:n { \g_tmpa_int }}} & } \makebox[.12\textwidth]{总分} & \makebox[.16\textwidth]{阅卷人签名}\\

\hline

\prg_replicate:nn { \int_eval:n { #1 + 1 } } {&}\\

\hline

\end{tabular}

}

\ExplSyntaxOff

\pagestyle{plain}

\begin{document}

\zihao{-4} % 小四号字体

%%%%% ===== 试卷头 ===============================================================

\begin{center}

{\heiti\LARGE 华东师范大学期末试卷 (A)} \bigskip

$20xx-20xx$ 学年第 X 学期

\bigskip\bigskip

%%%%% ===== 课程信息,包括课程名,课程性质等

\setlength{\tabcolsep}{1mm}

\renewcommand{\arraystretch}{1.4}

\begin{tabular}{p{7.5cm}p{6.5cm}}

课程名称:\ull{4.0cm}{\zihao{4} 数~值~分~析} & \\

学生姓名:\ul{4.0cm} &

学\hspace{10.5mm}号:\ul{4.0cm} \\

专\hspace{2em}业:\ull{4.0cm}{数学与应用数学} &

年级/班级:\ull{4.0cm}{20xx级} \\

课程性质:\ {\kaishu 专业X修} \\

\end{tabular}\smallskip

%%%%% ===== 得分表,其中 numexer 表示题号个数,这里设为 8,可根据实际需要修改,其他可以不用修改。

% \newcounter{numexer}\setcounter{numexer}{8} % 题号个数,这里为 8

% \newcounter{numcol}\setcounter{numcol}{\value{numexer}+2}

% \newlength{\cellwidth}\setlength{\cellwidth}{\textwidth*\ratio{0.6pt}{\value{numexer} pt}}

% \begin{tabular}{|*{\thenumcol}{c|}} \hline

% \repeatcell{\thenumexer}{rows=1,text=\makebox[\cellwidth]{\zhnumber{\column}}}

% & \makebox[0.12\textwidth]{总分} &\makebox[0.16\textwidth]{阅卷人签名} \\ \hline

% \repeatcell{\thenumcol}{rows=1,end=\\ \hline} \\ \hline

% \end{tabular}

%%%%%%%%%%%%%

\scorebox{8}

%%%%%%%%%%%%%

\end{center}

\medskip

\noindent\dotfill

\medskip

%%% The rest of the exercise...

相关推荐