如果不是非要用「LaTeX」的话,最好的办法是使用类似「X-mind」的软件,有对应的模板。

同时可以导出为「.pdf」文件(这也是高清矢量图),这是最高效的办法。当然,如果你是要探索forest的功能上限,那这个问题也是很有意义的。
如果不是非要用「LaTeX」的话,最好的办法是使用类似「X-mind」的软件,有对应的模板。

同时可以导出为「.pdf」文件(这也是高清矢量图),这是最高效的办法。当然,如果你是要探索forest的功能上限,那这个问题也是很有意义的。
问题似乎并不难解决...虽然明显「xelatex」有严重的问题(「xelatex」什么时候彻底淘汰啊!!真该死啊!!)
另外,为何一定要使用polyglossia而不是babel,后者似乎没有"Contents"的目录问题,和ctex的兼容性更好。
首先其实你问了两个问题:
.toc里不慎引入脏东西导致的)目录的标题没有正确修改,相同的讨论可见:
省流:ployglossia内部也定义了\chinese,这导致了默认语言设置失效。可以使用如下的trick来避开重复的定义:
\let\mychinese\chinese
\let\chinese\relax
\setdefaultlanguage{chinese}
\setmainfont{FandolSong}
\let\chinese\mychinese章节条目显示为方框,其实解决方案也不太困难...
只要将
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}(或者同样在xe下有问题的)
\begin{otherlanguage}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage}全部替换为
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}或者
\begin{otherlanguage*}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage*}似乎则可以防止在.toc中写入脏东西(无论xe还是lua都work)
要把他们结合起来其实不太行,因为polyglossia似乎不允许分开设置西文和中文字体...可以先按下面这么凑合...
\documentclass[
UTF8,openany,
a4paper,zihao=-4,
fontset=none
]{ctexbook}
\usepackage[paperheight=17cm]{geometry}
\ctexset{
chapter/name = {第,章},
% section/name = {},
% contentsname = \hfill 目\ 录 \hfill,
}
\setCJKmainfont[BoldFont=KaiTi,ItalicFont=FangSong]{NSimSun}
\setmainfont[BoldFont=Times New Roman]{Times New Roman}
\usepackage{polyglossia}
\setotherlanguage{sanskrit}
\newfontfamily\sanskritfont[Script=Devanagari]{Sanskrit2003.ttf}
\begin{document}
\renewcommand{\contentsname}{目\ 录}%after \begin{document}!
\frontmatter
\tableofcontents
\chapter{导论}
梵语
\footnote{梵语(梵语:\textsanskrit{संस्कृता वाक्},Saṃskṛtā vāk,简称\begin{otherlanguage*}{sanskrit}संस्कृतम्\end{otherlanguage*},Saṃskṛtam;英语Sanskrit)属于印欧语系中印度–伊朗语族的印度–雅利安语支,是该语系中最古老的语言之一。和拉丁语一样,梵语已经成为一种属于学术和宗教的专门用语。虽然现代梵语的母语使用者非常少,但是因为梵文本身的特殊性,在现代佛教、印度教和耆那教的经典中依然可以随处找到梵语。古印度相信梵文是由梵天发明。}
优雅动听,是印度高等种姓以及更早雅利安人所说的语言,历史比其它任何已知语言都更为久远。
\chapter{梵语的格}
主格:用于句子的主语。宾格:用作直接宾语,也用于“to”表达的与格(间接宾语)。具格:在英语中用于“by”,“with”或“by means of”句式中。与格:在“for”,“to”或“toward”意思上使用。离格:在“of”和“from”意思上使用。
\begin{otherlanguage*}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage*}
\mainmatter
\chapter{主格}
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}
\chapter{宾格}
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}
\chapter{具格}
\begin{otherlanguage*}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage*}
\chapter{与格}
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}
\end{document}
事实上,如下的多个字体配置宏包功能可能相互冲突:
ctex(xeCJK/luatexja)bidibabelpolyglossia既然已经选定了使用polyglossia做杂语支持,一种workaround是可以直接使用polygollssia的框架,不过「字体选择似乎有些受限(无法实现西文用TNR中文用NSimSun)」且「会失去\ctexset与format的功能」...
polyglossia的方案没有细调的一份代码如下(使用titlesec和titletoc调整样式):
\documentclass[openany]{book}
\usepackage{zhlipsum}
\usepackage{zhnumber}
\usepackage{fontspec}
\usepackage{polyglossia}
% \setmainfont{Times New Roman}
% \setCJKmainfont{NSimSun}
% \setmainfont{NSimSun}
\setdefaultlanguage{chinese}
\setmainfont{Noto Serif CJK SC}
\setotherlanguage{sanskrit}
\newfontfamily\sanskritfont[Script=Devanagari]{Sanskrit2003.ttf}
\usepackage{setspace}%
\setstretch{1.5}%
\usepackage{titlesec}
\usepackage{titletoc}
\titleformat{\chapter}{\filcenter\Huge\bfseries}{第\zhnum{chapter}章}{1cm}{}
\titlecontents{chapter}[3.8em]{}{第\zhnumber{\thecontentslabel}章\quad}{}{\hfill\bfseries\thecontentspage}
\begin{document}
\frontmatter
\tableofcontents
\chapter{导论}
梵语\footnote{梵语(梵语:\begin{sanskrit}संस्कृता वाक्\end{sanskrit},Saṃskṛtā vāk,简称\begin{sanskrit}संस्कृतम्\end{sanskrit},Saṃskṛtam;英语Sanskrit)属于印欧语系中印度–伊朗语族的印度–雅利安语支,是该语系中最古老的语言之一。}优雅动听优雅动听,是印度高等种姓以及更早雅利安人所说的语言,这是一段中English 0123-4567英混排历史 history 比其它任何已知语言都更为久远。\zhlipsum[2]
\chapter{梵语的格}
主格:用于句子的主语。
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}
\mainmatter
\chapter{主格}
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}
\chapter{宾格}
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}
\chapter{具格}
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}
\chapter{与格}
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}
\end{document}
本人使用TeXstudio编辑器。因latex编译的.toc文件
为什么不从根源出发,直接修复.tex文件的问题。
但每次编译前都要修改文件太繁琐,想通过宏(Script Macros)命令解决。
从你的描述来看,这个问题和「对任意一个文本文件进行该操作」无异,只是这个文件恰好是「.toc」,因此可以认为这个问题和LaTeX其实不太相关。
曾尝试通过AI生成脚本,但执行总通不过。
你最好举例说明.toc文件的具体情况,具体要如何匹配「删除文件中全部有字符串\selectlanguage *{sanskrit}和\selectlanguage *[script=Devanagari,numerals=Devanagari]{sanskrit}的行;」。例如这里\selectlanguage其后是否总是有空格,是否除了这两种情况还可能有其他的情况,这都可能影响脚本的写法。
最好补充给一个.toc修改前的范例和预期的脚本处理结果。否则别人不容易复现和测试。
要注意阅读文档:
应该先明确这个「编辑宏」的功能支持哪些语法....「QFile未定义显然是因为TeXStudio的脚本功能不支持这个"类"...」
我稍微vibe了一下,下面这个脚本似乎可行:
function cleanToc() {
var texFile = app.getCurrentFileName();
if (!texFile) {
alert("没有打开任何文件。");
return;
}
var tocFile = texFile.replace(/\.[^.]+$/, "") + ".toc";
var content = readFile(tocFile);
if (content === undefined || content === null) {
alert("无法读取 " + tocFile);
return;
}
var lines = content.split(/\r?\n/);
var result = [];
var deleted = 0;
// 匹配所有 \selectlanguage *{sanskrit} 以及带可选参数的形式
var re = /^\s*\\selectlanguage\s*\*(?:\[[^\]]*\])?\{sanskrit\}/i;
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
if (re.test(line.trim())) {
deleted++;
continue;
}
result.push(line);
}
writeFile(tocFile, result.join("\n"));
alert("清理完成:删除 " + deleted + " 行。\n文件:" + tocFile);
}
cleanToc();


其中
// 匹配所有 \selectlanguage *{sanskrit} 以及带可选参数的形式
var re = /^\s*\\selectlanguage\s*\*(?:\[[^\]]*\])?\{sanskrit\}/i;为匹配的正则表达式,可能要按需修改。
另外,为什么不从源头入手,「目录有问题」具体是哪里有问题?上述工作流非常不顺畅,而且路径也是写死的...
总的来说这个需求并不太合理....
\label{eq:06}」作为标签,设想你突然要增加一个编号公式,那么你很可能面临一次性修改eq:04~eq:20的窘境。可以使用有意义的名称例如「\label{eq:二次优化问题}」,这样引用也方便...aligned:\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\usepackage{amsmath}
\begin{document}
\lipsum[2][1-5]
\begin{equation}
\begin{aligned}
\min _{a_{i}^{*}, a_{i}} \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} & \left(a_{i}^{*}-a_{i}\right)\left(a_{j}^{*}-a_{j}\right) \phi_{Z}\left(X_{i}\right)^{T} \phi_{Z}\left(X_{j}\right)-\sum_{i=1}^{n}\left[y_{i}\left(a_{i}^{*}-a_{i}\right)-\varepsilon\left(a_{i}^{*}+a_{i}\right)\right], \\
\text { s.t. } \quad & \sum_{i=1}^{n}\left(a_{i}^{*}-a_{i}\right)=0, \\
& 0 \leq a_{i}^{*}, a_{i} \leq C, \\
&%<-aligned in aligned inside equation;-)
\begin{aligned}
\phi_{Z}\left(X_{i}\right)^{T} \phi_{Z}\left(X_{j}\right)&=\varphi\left(K_{D E K F}\left(X_{i}, Z\right)\right)^{T} \varphi\left(K_{D E K F}\left(X_{j}, Z\right)\right), \\
& =\left\langle\varphi\left(K_{D E K F}\left(X_{i}, Z\right)\right), \varphi\left(K_{DEKF}\left(X_{j}, Z\right)\right)\right\rangle, \\
& =K\left(K_{D E K F}\left(X_{i}, Z\right), K_{D E K F}\left(X_{j}, Z\right)\right),
\end{aligned}
\end{aligned}
\end{equation}
\lipsum[2][1-5]
\end{document}
zref-clever的一个处理方案...目前最简便的方案还是需要修改elegantbook.cls...这对于已经frozen的项目是不友好的❗
.cls,则该模板已经不再是公开意义上的官方模板,不能再被叫做「elegantbook模板」,而只能是「myelegantbook模板」,且模板的使用者必须对该模板的修改负完全责任❗❗❗% elegantbook.cls#L1001-L1016
\DeclareTColorBox[auto counter,number within=\ELEGANT@thmcnt,usesamecnt,usecnt]{#1}{ g o t\label g }{
common,#3,
label type=#1,%<-add label type key here
IfValueTF={##1}
{ELEGANT@title={#1}{##1}}
{
IfValueTF={##2}
{ELEGANT@title={#1}{##2}}
{ELEGANT@title={#1}{}}
},
IfValueT={##4}
{
IfBooleanTF={##3}
{label={##4}}
{ELEGANT@label={#2}{##4}}
}
}若如此做,对于下面的MWE文件main.tex:
\documentclass[lang=cn,fontset=fandol]{elegantbook}
\geometry{paperheight=14cm}
\usepackage{zref-clever}
\zcRefTypeSetup{theorem}{
Name-sg={定理},name-sg={定理},
Name-pl={定理},name-pl={定理},
}
\zcRefTypeSetup{definition}{
Name-sg={定义},name-sg={定义},
Name-pl={定义},name-pl={定义},
}
\begin{document}
\chapter{111}
\begin{definition}{Wang定义}{Wang}
这是一个定义。
\end{definition}
\begin{theorem}{欧拉定理}{Euler}
这是一个定理。
\end{theorem}
\zcref{def:Osbert}
\zcref{def:Wong}
\zcref{def:Wang}
\chapter{222}
\begin{definition}{Wong定义}{Wong}
这是一个定义。
\end{definition}
\begin{definition}{Osbert定义}{Osbert}
这是一个定义。
\end{definition}
\begin{theorem}{欧几里得公理}{Euclide}
这是另一个定理。
\end{theorem}
\zcref{thm:Euler}
\zcref{thm:Euclide}
\end{document}将得到:

要想「不修改.cls文件」,关键在于在已经写死的\DeclareTColorBox{env}中,是否有简单的方法对每个env添加一个新的键值对...
不过要添加的label type恰好其值为#1,也不能说上面的实现是坏的。
Noted that:
tcolorbox在2023年才加入对zref-clever的支持elegantbook已经在2022-12-31停止维护...这个锅不太应该由本修改(改的不好)来背,算是「2025年」的今天需要为了一些版本更迭造成的时间摩擦付出一些小小的代价吧...如果有朝一日elegantbook能增加新的feature,本post也许可能提供些许帮助...
Hope it helps!
cleveref方案的一个处理方案感谢@听风看雨 的提示:
初始选项
crefname={bluebox}{blueboxes}实际上只是
\crefname{tcb@cnt@mybluebox}{bluebox}{blueboxes}换言之上述的第一个mwe可以有另一个「更内部」的实现:
\documentclass[12pt]{article}
\usepackage[
noheadfoot,
margin=8mm,
papersize={10cm,10cm},
]{geometry}
\usepackage{cleveref}
\usepackage{tcolorbox}
\newtcolorbox[
auto counter,
number within=section,
% crefname={bluebox}{blueboxes}
]{mybluebox}[2][]{
% label is label,% default value
colback=blue!5!white,
colframe=blue!75!black,
fonttitle=\bfseries,
title=Bluebox \thetcbcounter: #2,#1
}
% add here<-
\makeatletter
\crefname{tcb@cnt@mybluebox}{bluebox}{blueboxes}
\makeatother
\begin{document}
\section{Blue}
\begin{mybluebox}[label={myreference}]{My title}
This is an example.
\end{mybluebox}
\begin{mybluebox}[label={myreference2}]{My titletitle}
This is an example.
\end{mybluebox}
\noindent
\Cref{myreference}, \cref{myreference}\\
\Cpageref{myreference}, \cpageref{myreference}\\
\nameCref{myreference}, \namecref{myreference}\\
\labelcref{myreference}, \labelcpageref{myreference}\\
\Cref{myreference2}, \cref{myreference2}\\
\Cref{myreference,myreference2}, \cref{myreference,myreference2}\\
\end{document}同样可以得到:

这意味着我们在elegantlatex框架下,对于基于tcolorbox的fancy模式也只需要对相应的环境做如下的patch和cref设置即可:
% \usepackage{cleveref}
\makeatletter
\crefname{tcb@cnt@theorem}{\theoremname}{\theoremname}
\crefformat{tcb@cnt@theorem}{\theoremname~#2#1#3}
\crefmultiformat{tcb@cnt@theorem}{\theoremname~#2#1#3}{~和~#2#1#3}{,#2#1#3}{~和~#2#1#3}
\crefrangeformat{tcb@cnt@theorem}{\theoremname~#3#1#4~至~#5#2#6}
\crefname{tcb@cnt@definition}{\definitionname}{\definitionname}
\crefformat{tcb@cnt@definition}{\definitionname~#2#1#3}
\crefmultiformat{tcb@cnt@definition}{\definitionname~#2#1#3}{~和~#2#1#3}{,#2#1#3}{~和~#2#1#3}
\crefrangeformat{tcb@cnt@definition}{\definitionname~#3#1#4~至~#5#2#6}
\makeatother\documentclass[lang=cn,fontset=fandol]{elegantbook}
\geometry{paperheight=12cm}
\usepackage{cleveref}
\makeatletter
\crefname{tcb@cnt@theorem}{\theoremname}{\theoremname}
\crefformat{tcb@cnt@theorem}{\theoremname~#2#1#3}
\crefmultiformat{tcb@cnt@theorem}{\theoremname~#2#1#3}{~和~#2#1#3}{,#2#1#3}{~和~#2#1#3}
\crefrangeformat{tcb@cnt@theorem}{\theoremname~#3#1#4~至~#5#2#6}
\crefname{tcb@cnt@definition}{\definitionname}{\definitionname}
\crefformat{tcb@cnt@definition}{\definitionname~#2#1#3}
\crefmultiformat{tcb@cnt@definition}{\definitionname~#2#1#3}{~和~#2#1#3}{,#2#1#3}{~和~#2#1#3}
\crefrangeformat{tcb@cnt@definition}{\definitionname~#3#1#4~至~#5#2#6}
\makeatother
\begin{document}
\chapter{111}
\begin{definition}{\LaTeX 定义}{LaTeX}
这是\LaTeX{}的定义
\end{definition}
\begin{theorem}{欧拉定理}{Euler}
这是一个定理。
\end{theorem}
\begin{theorem}{毕达哥拉斯定理}{Bachagoras}
这是一个定理。
\end{theorem}
\cref{def:Osbert}
\cref{def:Wong,def:LaTeX,def:Wang}
\cref{def:Osbert,def:Wong,def:LaTeX,def:Wang}
\chapter{222}
\begin{definition}{Osbert定义}{Osbert}
这是一个定义。
\end{definition}
\begin{theorem}{欧几里得公理}{Euclide}
这是另一个定理。
\end{theorem}
\cref{thm:Euclide}
\cref{thm:Euler,thm:Bachagoras}
\cref{thm:Euler,thm:Bachagoras,thm:Euclide}
\chapter{333}
\begin{definition}{Wong定义}{Wong}
这是一个定义。
\end{definition}
\begin{definition}{Wang定义}{Wang}
这是一个定义。
\end{definition}
\end{document}这将得到:

既然我在这里提到:
期待你自行探索wrapfig,wrapfig2以及夏老师的text-figure宏包的使用方法
稍微补充一下其他的方案:
minipage环境:\documentclass[fontset=fandol]{ctexart}
\usepackage{showframe}
\usepackage{enumitem}
\usepackage{mathtools}
\usepackage{amsfonts}
\begin{document}
\section{基于\texttt{minipage}的方案}
\noindent 已知$\triangle ABC$中,$AB=AC=12$厘米,$BC=9$厘米,点$D$为$AB$中点。
\par\vspace*{8pt}\noindent
\begin{minipage}{.7\linewidth}%
\begin{enumerate}[
label={(\arabic*)},
labelindent=1em,
labelwidth=0.2em,
labelsep=0.2em,
leftmargin=3em,
% parsep=-2pt,
nosep,%<-我更推荐这个选项
]
\item 如果点$P$在线段$BC$上以3厘米秒的速度由$BC$运动,同时点$Q$在线段$CA$上由$C$点向$A$点运动。若点$Q$的运动速度与点$P$的运动速度相等,当运动1秒时,$\triangle BPD$与$\triangle CQP$是否全等?若点$Q$的运动速度与点$P$的运动速度不相等,当点$Q$的运动速度为多少时,$\triangle BPD \cong \triangle CPQ$?
\item 若点$Q$以(1)中,的速度从点 $C$ 出发,点 $P$ 以原来运动速度从点$B$出发,都逆时针沿$\triangle ABC$三边运动,多长时间$P$与$Q$第一次相遇,此时在$\triangle ABC$哪条边上相遇?
\end{enumerate}
\end{minipage}%
\begin{minipage}{.3\linewidth}
\begin{center}
\includegraphics[width=3.5cm,height=6cm]{example-image-duck}
\end{center}
\end{minipage}%
\end{document}
text-figure宏包这个包是@u10945 基于写的,没有发在CTAN上,需要自行下载(需要在这里获取text-figure_usermanual.pdf
)...如非必要,可以不使用...
我在这里做演示,也同样只是锻炼一下自己"一题多解"的能力...
\documentclass[fontset=fandol]{ctexart}
\usepackage{showframe}
\usepackage{enumitem}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{text-figure}
\begin{document}
\section{基于\texttt{text-figure}的方案}
\noindent 已知$\triangle ABC$中,$AB=AC=12$厘米,$BC=9$厘米,点$D$为$AB$中点。
\textfigure[fig-pos = right,text-ratio=.68]{
\begin{enumerate}[
label={(\arabic*)},
labelindent=1em,
labelwidth=0.2em,
labelsep=0.2em,
leftmargin=3em,
nosep,%<-我更推荐这个选项
]
\item 如果点$P$在线段$BC$上以3厘米秒的速度由$BC$运动,同时点$Q$在线段$CA$上由$C$点向$A$点运动。若点$Q$的运动速度与点$P$的运动速度相等,当运动1秒时,$\triangle BPD$与$\triangle CQP$是否全等?若点$Q$的运动速度与点$P$的运动速度不相等,当点$Q$的运动速度为多少时,$\triangle BPD \cong \triangle CPQ$?
\item 若点$Q$以(1)中,的速度从点 $C$ 出发,点 $P$ 以原来运动速度从点$B$出发,都逆时针沿$\triangle ABC$三边运动,多长时间$P$与$Q$第一次相遇,此时在$\triangle ABC$哪条边上相遇?
\end{enumerate}
}{
\includegraphics[width=3.5cm,height=6cm]{example-image-duck}
}
\end{document}
wrapstuff宏包\documentclass[fontset=fandol]{ctexart}
\usepackage{showframe}
\usepackage{enumitem}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage{wrapstuff}
\usepackage{lipsum}%
\begin{document}
\section{基于\texttt{wrapstuff}的方案}
\lipsum[2]
\noindent 已知$\triangle ABC$中,$AB=AC=12$厘米,$BC=9$厘米,点$D$为$AB$中点。
\begin{wrapstuff}[r,top=0]
\includegraphics[width=3.5cm,height=6cm]{example-image-duck}
\end{wrapstuff}
\begin{enumerate}[
label={(\arabic*)},
labelindent=1em,
labelwidth=0.2em,
labelsep=0.2em,
leftmargin=3em,
nosep,%<-我更推荐这个选项
]
\item 如果点$P$在线段$BC$上以3厘米秒的速度由$BC$运动,同时点$Q$在线段$CA$上由$C$点向$A$点运动。若点$Q$的运动速度与点$P$的运动速度相等,当运动1秒时,$\triangle BPD$与$\triangle CQP$是否全等?若点$Q$的运动速度与点$P$的运动速度不相等,当点$Q$的运动速度为多少时,$\triangle BPD \cong \triangle CPQ$?
\item 若点$Q$以(1)中,的速度从点 $C$ 出发,点 $P$ 以原来运动速度从点$B$出发,都逆时针沿$\triangle ABC$三边运动,多长时间$P$与$Q$第一次相遇,此时在$\triangle ABC$哪条边上相遇?
\end{enumerate}
\wrapstuffclear
\lipsum[2]
\end{document}
需要指出的是,wrapstuff实现的是「图文环排」,而不只是「图文并排」。前者的难度远高于后者,详见wrapstuff文档。

加上overlay.
\documentclass{ctexbeamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\setbeamertemplate{footline}{
%\hspace*{-0.2pt}%
\begin{tikzpicture}
\def\r{1pt}
\def\d{0.3pt}
\coordinate (A) at (0,1.3em);
\coordinate (B) at ($(A)+(0:{\paperwidth-(\r)-(\d)})$);
\draw[red,overlay] (A)--(B);
\fill[fill=white,line width=\d] (B) circle (\r);
\node[anchor=south west,inner sep=0pt,outer sep=0pt,fill=red] at (0,0){\color{white}测试测试测试};
\end{tikzpicture}
}
\begin{document}
\begin{frame}
测试
\end{frame}
\end{document}具体原因我也不是非常清楚,因为\draw (A)--(B);会向左增大整个tikzpicture的bounding box.
我相信其他坛友能给出更详细的解释...

试试...
\documentclass{beamer}
\usetheme{moloch}
\usepackage{etoolbox}
\makeatletter
\newcount\beamer@sectionstartframe
\beamer@sectionstartframe=1
\apptocmd{\beamer@section}{\addtocontents{nav}{\protect\headcommand{%
\protect\beamer@sectionframes{\the\beamer@sectionstartframe}{\the\c@framenumber}}}}{}{}
\apptocmd{\beamer@section}{\beamer@sectionstartframe=\c@framenumber\advance\beamer@sectionstartframe by1\relax}{}{}
\AtEndDocument{\immediate\write\@auxout{\string\@writefile{nav}%
{\noexpand\headcommand{\noexpand\beamer@sectionframes{\the\beamer@sectionstartframe}{\the\c@framenumber}}}}}{}{}
\def\beamer@startframeofsection{1}
\def\beamer@endframeofsection{1}
\def\beamer@sectionframes#1#2{%
\ifnum\c@framenumber<#1%
\else%
\ifnum\c@framenumber>#2%
\else%
\gdef\beamer@startframeofsection{#1}%
\gdef\beamer@endframeofsection{#2}%
\fi%
\fi%
}
\newcommand\insertsectionstartframe{\beamer@startframeofsection}
\newcommand\insertsectionendframe{\beamer@endframeofsection}
\makeatother
\setbeamertemplate{headline}{
\Large\sffamily
\inteval{\insertframenumber - \insertsectionstartframe + 1}
/
\inteval{\insertsectionendframe - \insertsectionstartframe + 1}
}
\begin{document}
\begin{frame}sec=0,framenumber=1\end{frame}
\begin{frame}sec=0,framenumber=2\end{frame}
\begin{frame}sec=0,framenumber=3\end{frame}
\section{Sec1}
\begin{frame}sec=1,framenumber=1
\begin{itemize}
\item<1-> First item
\item<2> Second item
\item<3-> Third item
\end{itemize}
\end{frame}
\begin{frame}sec=1,framenumber=2\end{frame}
\begin{frame}sec=1,framenumber=3\end{frame}
\section{Sec2}
\begin{frame}sec=2,framenumber=1\end{frame}
\begin{frame}sec=2,framenumber=2\end{frame}
\section{Sec3}
\begin{frame}sec=3,framenumber=1\end{frame}
\begin{frame}sec=3,framenumber=2\end{frame}
\begin{frame}sec=3,framenumber=3\end{frame}
\begin{frame}sec=3,framenumber=4
\begin{itemize}
\item<1-> First item
\item<2-> Second item
\item<3> Third item
\item<4-> Third item
\end{itemize}
\end{frame}
\begin{frame}sec=3,framenumber=5\end{frame}
\end{document}
如果只是要给公式加虚线框,可以直接使用texdoc dashbox(可以参见这里).
但你这个具体的例子中,有较为严格的对齐关系,且对箭头样式似乎也有要求,还是考虑nicematrix:
\documentclass{article}
\usepackage{amsmath}
\usepackage{nicematrix}
\usepackage{tikz}
\newcommand{\myarrow}[1][.75]{\tikz\draw[latex-latex,semithick](0,0)--(0,#1);}
\begin{document}
before $\begin{NiceArray}[c]{@{}*{18}{c@{}}}
x^3 & \,+\, & 2^3 & \;=\; & ( & x & \,+\, & 2 & ) & ( & x^2 & \,-\, & x & \,\cdot\,& 2 & \,+\, & 2^2 & ) \\
\myarrow & & \myarrow & & & \myarrow & & \myarrow & & & \myarrow & & \myarrow & & \myarrow & &\myarrow\\[-1pt]
a^3 & \,+\, & b^3 & \;=\; & ( & a & \,+\, & b & ) & ( & a^2 & \,-\, & a &\,\cdot\, & b & \,+\, & b^2 & )
\CodeAfter
\tikz[line cap=round]
\draw[densely dotted,semithick]
([xshift=-.6em]2-1.west) rectangle ([shift={(.2em,-1ex)}]3-3.south east)
([xshift=-.8em]2-6.west) rectangle ([shift={(.6em,-1ex)}]3-17.south east)
;
\end{NiceArray}$ after
\end{document}注意其中对「原子」间距的微调。另外最好给完整代码,避免别人需要根据代码猜测导言区使用了什么包,减轻潜在回答者的负担。

ctex文档似乎有类似的例子:

并不太简单,需要注意不少细节。而且大量\multicolumn散落分布在表格正文中其实是会影响表格代码的可读性的。
虽然tabularray提供了方便的接口,但是基础的也得会!
没记错的话,高中数学也 切忌 过于追求高等数学的高观点“秒杀”法,比较繁琐的计算、基础的方法更是重中之重。
从一名学习者的角度,个人还是建议都掌握😀用的时候选择「最佳实践」即可。
只要加上\cline{2-6}就报错,删掉或改成\cline{2-3}就通过
\cline{2-6}报错的主要原因是合并后仅剩4列了...
\documentclass[11pt,space]{ctexart}
\usepackage{showframe}
\usepackage{array}
\usepackage{multirow}
\begin{document}
\noindent%
\begin{tabular}{|*{2}{c|}*{2}{>{\centering\arraybackslash}m{4cm}|}}
\hline
\multicolumn{4}{|c|}{$y=a^x(a>0,a\neq 1)$} \\
\hline
\multicolumn{2}{|c|}{\multirow{6.25}{*}{图象}} & $a>1$ & $0<a<1$ \\
\cline{3-4}
%问题1:如何调节行高,留出画图的空间?
\multicolumn{2}{|c|}{} %<- 刻意用于占位以避免垂直竖线
&\vbox{\vspace{3cm}} & \\
\hline
\multirow{7}{*}{性质} & 定义域 & \multicolumn{2}{c|}{}\\
\cline{2-4}%<-add % 问题2:如何给后6行画横线?
& 值域 & \multicolumn{2}{c|}{} \\
\cline{2-4}%<-add
& 定点 & \multicolumn{2}{c|}{} \\
\cline{2-4}%<-add
& 单调性 & \multicolumn{2}{c|}{} \\
\cline{2-4}%<-add
& 奇偶性 & \multicolumn{2}{c|}{} \\
\cline{2-4}%<-add
& 对称性 & $y=a^x$~与~$y=(\frac{1}{a})^x$的图象关于\qquad 对称 & \\
\hline
\end{tabular}
\end{document}
a>1和0<a<1下面画横线」...其实不要理解为画线,理解为被合并前的单元格会更合适...\documentclass[11pt,space]{ctexart}
\usepackage{tabularray}
\begin{document}
\SetTblrInner{hlines, vlines, hspan=minimal}
\begin{tblr}{
colspec = {Q[c,m,wd=10mm]Q[c,m,wd=20mm]Q[c,m,wd=30mm]Q[c,m,wd=30mm]},
row{1} = {ht=10mm},
row{3} = {ht=40mm},
cell{1}{1}={c=4}{c},
% cell{2}{1}={c=2}{c},%<--
cell{2}{1}={c=2,r=2}{c},
cell{4-8}{3}={c=2}{l},
cell{4}{1}={r=6}{c},%<-合并第1列后6行
}
$y=a^x(a>0,a\neq 1)$ & & & \\
图象 & & $a>1$ & $0<a<1$ \\
& & & \\%<-新增一个空行用于合并(a.k.a. 在第2行的a>1和0<a<1下面画横线)
性质 & 定义域 & & \\
& 值域 & & \\
& 定点 & & \\
& 单调性 & & \\
& 奇偶性 & & \\
& 对称性 & $y=a^x$~与~$y=(\frac{1}{a})^x$的图象关于$y=x$对称 & \\
\end{tblr}
\end{document}
如果有较多类似的教学表格排版需求,可以在本站搜索有关的回答参考学习:
问 关于利用forest宏包实现思维导图可行性的讨论