鱼香肉丝没有鱼先生
鱼香肉丝没有鱼先生
脾气不好,别来惹我!!!

注册于 4年前

回答
110
文章
1
关注者
8

首先需要明白的是 tex/expl3 是一门宏语言, 没有函数, 也没有返回值, 有的只是宏展开

  1. 先说点题外话
\tl_set:Ne \l__skyrmion_tmp_tl
  {
    \__skyrmion_process_array_aux:nn
      { example-image-a/yyyy1-mm1-dd1,example-image-b/yyyy2-mm2-dd2 }{2}
  }

e 展开了个寂寞, \cs_new_protected_nopar:Npn \__skyrmion_process_array_aux:nn

  1. 你的需求是将 \__skyrmion_process_array_aux:nn 的运行结果交给变量 \l__skyrmion_tmp_tl, 你可以使用 \tl_analysis_log:N \l__skyrmion_tmp_tl 看看它究竟是个什么东西. (一堆未展开的东西)
  2. 要想在 expl3 中得到所谓的函数展开值, 建议将其声明在参数列表中
\cs_new_protected_nopar:Npn \__skyrmion_process_array_aux:nnN #1#2#3
  {
    \clist_set:Nn \l__skyrmion_tmp_clist {#1}
    \seq_set_split:Nne \l__skyrmion_tmp_seq {/}
      { \clist_item:Nn \l__skyrmion_tmp_clist {#2} }
    % here ^_^
    \tl_set:Ne #3 
      { \seq_item:Nn \l__skyrmion_tmp_seq {1} }
    \seq_clear:N \l__skyrmion_tmp_seq
    \clist_clear:N \l__skyrmion_tmp_clist
  }

使用

\__skyrmion_process_array_aux:nnN
  { example-image-a/yyyy1-mm1-dd1,example-image-b/yyyy2-mm2-dd2 }{2}
\l__skyrmion_tmp_tl
\includegraphics [ width = 2cm ] { \l__skyrmion_tmp_tl }

.

一个比较粗糙的答案

\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}
% \def\picLevel{s} %% here 
\def\picLevel{m} %% here 

\NewCommandCopy{\originincludegraphics}{\includegraphics}
\RenewDocumentCommand{\includegraphics}{O{}m}{%
    \originincludegraphics[#1]{#2_\picLevel}%
}


\begin{document}
\lipsum[1]
\begin{figure}[ht]
    \begin{minipage}[t]{0.5\textwidth}
        \centering
        \includegraphics[scale=1]{bee}
    \end{minipage}
    \begin{minipage}[t]{0.5\textwidth}
        \centering
        \includegraphics[scale=1]{cat}
    \end{minipage}
\end{figure}
\lipsum[2]
\end{document}

读手册, 读手册, 读手册

不要想当然, 不要想当然, 不要想当然

封面这个都够你用了
image.png

你这里的 {ccc} 是你自己想当然加上的???,
image.png

读手册, 读手册, 读手册

不要想当然, 不要想当然, 不要想当然

\documentclass{article}
\usepackage{tabularray}
\begin{document}

\begin{tblr}{
  rowspec = {ccc},
  row{odd}={gray},row{even}={cyan}
 }
  1  &2  &3\\
  1 &2 &3\\
  1  &2  &3\\
  1  &2  &3\\
\end{tblr}

\end{document}

image.png

\documentclass{article}

\ExplSyntaxOn

\seq_new:N \l__skyrmion_tmp_seq
\NewDocumentCommand \foo {O{3\c_colon_str2}}
  {
    \group_begin:
    \seq_set_split:Nee \l__skyrmion_tmp_seq {\c_colon_str} {#1}
    \exp_args:NNe \seq_item:Nn \l__skyrmion_tmp_seq {1},~ and~
    \exp_args:NNe \seq_item:Nn \l__skyrmion_tmp_seq {2}
    \group_end:
  }

\ExplSyntaxOff

\begin{document}

\foo

\foo[1:2]

\end{document}

minimum size 会先经过 \pgfmathparse 解析,得到的是一个不带单位的数值

即当你键入 minimum size = sqrt(3) 得到的是 minimum size = 1.732..., 默认单位是 pt, 所以会得到你当前的结果

最简单的解决方案是 minimum size = sqrt(3) * 1cm

当然还可以自己定义一个 operator,

\pgfmathdeclarefunction{cm}{1}{%
    \pgfmathparse{#1 * 28.45274}%
}
\pgfmathdeclareoperator{cm}{cm}{2}{postfix}{250}

再使用 minimum size = sqrt(3)cm

\documentclass[tikz,border=2pt]{standalone}
\pgfmathdeclarefunction{cm}{1}{%
    \pgfmathparse{#1 * 28.45274}%
}
\pgfmathdeclareoperator{cm}{cm}{2}{postfix}{250}

\begin{document}
\begin{tikzpicture}
    \draw [gray!70] (0cm,0cm) grid (2cm,2cm);
    \node at (0,0) [minimum size={1.7cm},draw,circle] {};
    \node at (0,0) [minimum size= sqrt(3)cm,draw=red,circle] {};
\end{tikzpicture}
\end{document}

\begin{flushright}
  ...
\end{flushright}

试试?

观察报错信息

(c:/texlive/texmf-local/tex/latex/mtpro2/mtpro2.sty

! LaTeX Error: Command \Bbbk already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.1487 \newcommand{\Bbbk}{\mathbb{k}}

是由于 \Bbbk 已定义导致的冲突, 这是由于 amssymbmtpro2 均定义了这个命令, beamer 默认会载入 amssymb, 可使用 @u20011 提供的解决方案
image.png

也可以做如下尝试
image.png
image.png

\fancyfoot[C]{\kaishu{}理科数学试题\quad 第\thepage  页 \refstepcounter{page}\quad (共~\pageref{LastPage}~页)\hspace*{13cm} 理科数学试题\quad 第\thepage  页 \quad (共~\pageref{LastPage}~页)}

页脚配置改成如上代码即可.
GEEexam.sty

\item[二、多项选择题:] 本题共 3 小题,每小题 6 分,共 18 分. 在每小题给出的选项中,有多项符合题目要求. 全部选对的得 6 分,部分选对的得部分分,有选错的得 0 分.

改成

\item[] 二、多项选择题:本题共 3 小题,每小题 6 分,共 18 分. 在每小题给出的选项中,有多项符合题目要求. 全部选对的得 6 分,部分选对的得部分分,有选错的得 0 分.

代码有三处问题,

  • 缺字体 mathsymbol-zh-cn.otf, 可以下载该字体到文件夹内,也可以选择将 mathsymbolzhcn.sty 中第 8 行
\newfontfamily\unicodefont{mathsymbol-zh-cn.otf}

更改为

\let\unicodefont\relax

推荐前者.

  • ZKSJ.cls 中所有的 pre label=, 全部删掉或者更改为 pre label={}, 如下图

image.png

  • 2024_武珞路_有理数02.tex 中第 267 行多了个 & 符号,这是你自己的低级错误.

image.png

另外多一句嘴,为什么不用 exam-zh 呢?

去掉

texcl = true
\documentclass[a4paper]{article} %确定是A4纸格式
\usepackage{geometry}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
%页边距左、右、上、下
\usepackage[UTF8,heading=true]{ctex}  %导入中文包

%%%%%%%%页眉页脚的处理%%%%%%%%%%%%
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt} % 移除页眉横线
\renewcommand{\footrulewidth}{0pt} % 移除页脚横线
\lfoot{}%这条语句可以让页码出现在下方
%%%%%%%%页眉页脚的处理%%%%%%%%%%%%

\usepackage{abstract} %导入摘要页
\renewcommand{\abstractname}{\bf\songti\zihao{4} 摘\hspace{1cm}要}%设置“摘要”两字的大小与间距
\setlength{\absleftindent} {1pt} %摘要的右缩进
\setlength{\absrightindent}{1pt} %摘要的左缩进

%调用数学公式包
\usepackage{amssymb}
\usepackage{amsmath}


\usepackage{listings}%用于设置插入附录的代码
\usepackage[dvipsnames]{xcolor} % 更全的色系
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% listings设置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\lstset{
    language = Matlab,
    backgroundcolor = \color{gray!10}, % 背景色:灰色
    basicstyle = \normalsize\ttfamily, % 基本样式 + 小号字体
    rulesepcolor= \color{blue!30}, % 代码块边框颜色
    breaklines = true, % 代码过长则换行
    flexiblecolumns,
    numbers = left, % 行号在左侧显示
    numberstyle = \small, % 行号字体
    keywordstyle = \color{blue}, % 关键字颜色
    commentstyle =\color{black!40!green}, % 注释颜色
    stringstyle = \color{red!100}, % 字符串颜色
    frame = shadowbox,  % 用(带影子效果)方框框住代码块
    showspaces = false, % 不显示空格
    columns = fixed, % 字间距固定
    % texcl=true,
    escapeinside=``,
}


%改变公式大小但不改变公式标号大小的设置%
\makeatletter
\renewcommand{\maketag@@@}[1]{\hbox{\m@th\normalsize\normalfont#1}}%
\makeatother
%改变公式大小但不改变公式标号大小的设置%

%自定义标题设置
%正文部分是小四,一级标题是三号,二级标题是小三,三级标题是四号
\ctexset{
    section = {
        format = \centering\bf\songti\zihao{3}, % 设置一级标题的字体格式
        name = {}, % 通常章节标题前不需要标点
        number = \chinese{section}, % 中文编号
        aftername = 、, % 章节标题后通常使用点号
    },
    subsection = {
        format = \bf\songti\zihao{4}, % 设置二级标题的字体格式
        name = {}, 
        aftername = 、,
    },
    subsubsection = {
        format = \bf\songti\zihao{-4}, % 设置三级标题的字体格式
        aftername = 、, 
    }
}
\fancyhead{} % 清除所有页眉内容

\usepackage{enumitem} 

%.svg图片
\usepackage{svg}

%表格调整
\usepackage{tabularx}

%表格加粗
\usepackage{booktabs}

%设置表格间距
\usepackage{caption}

%允许表格长跨页
\usepackage{longtable}

%调用浮动包
\usepackage{float}
\usepackage{subfig}

%调用表格
\usepackage{multirow}

\captionsetup[table]{labelsep=space} %去除表格标题的冒号

\usepackage{times}

\usepackage{graphicx}
\graphicspath{{figures/}} %图片在当前目录下的figures目录

\linespread{1.25} %行间距
\usepackage{multirow} % 用于合并行
\begin{document}
\begin{lstlisting}[language = Matlab]
clc;
close all;
clear;

load('Position_Longshen.mat')
load('Position_Longtou.mat')
load('Position_Longtou_Hou.mat')
load('data.mat')
%Position = [Position_Longtou;Position_Longtou_Hou;Position_Longshen];
Position = data;
% plot(Position(1:2:end,end),Position(2:2:end,end),'g');
% axis equal;
% hold on;

%求矩形的左下点
syms x1 y1 x2 y2;
Qian_Point = zeros(420,2);

for i = 1:420
% 定义方程
eq1 = (Position(1,i)-x1)^2 + (Position(2,i)-y1)^2 == 0.275^2 + 0.15^2;
eq2 = (Position(3,i)-x1)^2 + (Position(4,i)-y1)^2 == (3.41-0.275)^2 + 0.15^2;
eq3 = (Position(1,i)-x2)^2 + (Position(2,i)-y2)^2 == (3.41-0.275)^2 + 0.15^2;
eq4 = (Position(3,i)-x2)^2 + (Position(4,i)-y2)^2 == 0.275^2 + 0.15^2;
% 求解方程
sol1 = solve([eq1, eq2], [x1,y1]);
sol2 = solve([eq3,eq4], [x2,y2]);

x_decimal1 = double(sol1.x1);
y_decimal1 = double(sol1.y1);
x_decimal2 = double(sol2.x2);
y_decimal2 = double(sol2.y2);

vertices = [x_decimal1(2), y_decimal1(2);
x_decimal1(1), y_decimal1(1);
x_decimal2(1), y_decimal2(1);
x_decimal2(2), y_decimal2(2)];
Qian_Point(i,1) = x_decimal1(2);
Qian_Point(i,2) = y_decimal1(2);
% fill(vertices(:,1), vertices(:,2), 'r');
end
plot(Qian_Point(1:420,1)',Qian_Point(1:420,2)','g')
axis equal;

\end{lstlisting}
\end{document}

经测试,为宏包 bug.
可以向作者提 issue.
以下是临时解决办法.
在导言区加入

\usepackage{xpatch}
\ExplSyntaxOn
  \patchcmd\__circledtext_calc_char_box_size:{\dim_gset_eq:NN \charboxwd}{\dim_set_eq:NN \charboxwd}{}{}
  \patchcmd\__circledtext_calc_char_box_size:{\dim_gset_eq:NN \charboxht}{\dim_set_eq:NN \charboxht}{}{}
\ExplSyntaxOff

image.png

你应该见过类似如下的写法吧.

\includegraphics[width = 0.5\textwidth]{example.png}

0.5\textwidth???, 你加个 * 意欲何为?, 不要有太多的自以为.

既然使用了 ctex,建议读一下 ctex 包手册,使用其接口

\ctexset{
  section = {
    name = {,},
    number = \chinese{section}
  }
}

MWE


\documentclass{article}
\usepackage[UTF8, heading=true]{ctex}
\usepackage{lipsum, zhlipsum}

% ---------- 示例区域(导言区) ---------- %
% \renewcommand{\thesection}{\chinese{section}}
\usepackage{amsmath} %\numberwithin
\usepackage{graphicx}
\usepackage{float} %option H
\numberwithin{figure}{section}
% ======================================== %


\ctexset{
  section = {
    name = {,},
    number = \chinese{section}
  }
}

\begin{document}

\tableofcontents
\listoffigures

\section{占位}

hallo LaTeX

% ---------- 示例区域(正文) ---------- %

\section{图片在这一章}

\begin{figure}[H]
  \caption{示例图片1}%\label{}
\end{figure}

% ======================================== %

\end{document} 

image.png

\begin{filecontents*}[overwrite]{myclass.cls}
\ProvidesClass{myclass}

\LoadClass{article}

\RequirePackage[margin = 2cm]{geometry}

\newif\if@classname@option@i 
\newif\if@classname@option@ii 

\DeclareOption{option-i}{
  \@classname@option@itrue
}

\DeclareOption{option-ii}{
  \@classname@option@iitrue
}

\ProcessOptions*\relax


\if@classname@option@i%
  \def\cmd{Y}%
\else%
  \if@classname@option@ii%
    \def\cmd{Y}%
  \else
    \def\cmd{N}%
  \fi
\fi


\end{filecontents*}

\documentclass{myclass}
% \documentclass[option-i]{myclass}
% \documentclass[option-ii]{myclass}

\begin{document}
\cmd
\end{document}

扩展问题,可以看看 expl3, 会方便很多.

发布
问题