Sagittarius Rover
Sagittarius Rover
我要成为Typst糕手/(ㄒoㄒ)/~~

注册于 3年前

回答
405
文章
0
关注者
15

nicematrix的方案一:

\documentclass{article}
\usepackage{libertinus-otf}
\usepackage{nicematrix}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\[
X = 
\begin{pNiceMatrix}[extra-margin=7pt,cell-space-limits=.125cm]
1\Block[borders={bottom,left,tikz=densely dashed}]{1-1}{} & 0 & 2 & 0 & -3 \\
0 & 1\Block[borders={bottom,left,tikz=densely dashed}]{1-2}{} & -1 & 0 & -4 \\
0 & 0 & 0 & 3\Block[borders={bottom,left,tikz=densely dashed}]{1-2}{} & 5 \\
0 & 0 & 0 & 0 & 0 \\
\end{pNiceMatrix}
= Y
\]
\lipsum[2]

\end{document}

image.png

另一个基于plain-tikz的方案:

思路和上面基本一样,不过定点我用了tikz里其他的功能

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
\begin{tikzpicture}[line cap=round]
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (E) at (3,{sqrt(3)});
% 点D可以视为(3,0)绕点A逆时针旋转60度 用极坐标来写是「60:3」
\coordinate (D) at (60:3);
% 点C可以视为(3,0)绕点B顺时针旋转120度
% 看这个教程 https://tikz.dev/tikz-coordinates#sec-13.5.3
\coordinate (C) at ($(B)!1!-120:(3,0)$);
\draw[thick,cyan] (A) -- (B) -- (E) -- cycle;
\draw[thick,red] (A) -- (D) -- (C) -- (B);
\path (A) node[below left] {$A$} 
      (B) node[below] {$B$} 
      (C) node[right] {$C$} 
      (D) node[above] {$D$} 
      (E) node[above right] {$E$};
% 角度看这个教程 https://tikz.dev/library-angle#pgf.angles
\path 
pic ["1",draw,cyan,thick,angle radius=.75cm,angle eccentricity=1.35] {angle = E--A--D}
pic ["2",draw,violet,thick,angle radius=.5cm,angle eccentricity=1.35] {angle = B--A--E}
pic ["3",draw,olive,thick,angle radius=.35cm,angle eccentricity=1.5] {angle = E--B--A}
pic ["4",draw,orange,thick,angle radius=.55cm,angle eccentricity=1.35] {angle = C--B--E}
;
\end{tikzpicture}
\end{document}

image.png

通用的绘图逻辑: 思考确定合适的思路/顺序 ➡ 定点 ➡ 连线 ➡ 标记

但是在实际操作时,由于写代码更多的是坐标来描述点的位置,因此想上面图中的D点和C点的坐标并不好精确确定,这个时候一般靠抖机灵吧

先看看你的思路:

手绘的时候,我的思维是这样的:先画出来一条直线长度为4的线段AB → 画出来∠DAB和∠CBA → 画出∠DAB和∠CBA各自的角平分线(射线),取到交点E并裁掉射线多余的部分 → 过E点按照原图中的样子画直线DC → 把多余的线擦掉

是可以做到的,但是在绘图时「绘制相等的角」和「取交点」在代码实现上相对是比较长的,在这个例子里可以规避,让思路更简单,也让代码更简单;而且在画的时候,只有使用指令才会绘制,我们可以只定义某个点但不做绘制,也就不需要所谓的「擦去」了。上面的「思考确定合适的思路/顺序」要以有便捷的命令来实现为原则,这可能需要对tkz-euclide提供的功能有一定的熟悉度,尽量避免一些比较复杂的定点思路。


因为这是平面欧几里得几何,所以我会优先选择tkz-euclide,使用纯tikz画起来更难受...有空我会做补充,你可以对比一下...

分享一下我抖机灵的思路,其实这里比较难确定的是D点和C点,而他们都是Q点的对称点,通过texdoc tkz-euclide在文档里寻宝,不难发现有projection操作:

image.png

于是最初步的定点思路和代码基本出来了:
1:确定 A B Q E 的坐标
2:Q关于AE做轴对称;Q关于BE做轴对称
3:连接点绘制图形
4:做点的标记和角度的标记

\documentclass[tikz,border=5pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[line cap=round]
% step1定点
\tkzDefPoints{0/0/A,5/0/B,3/0/Q,3.2/2.4/E}
% step2对称定点
\tkzDefPointBy[reflection = over A--E](Q) 
\tkzGetPoint{D} 
\tkzDefPointBy[reflection = over B--E](Q) 
\tkzGetPoint{C}
% step3绘制框架
\tkzDrawPolygon[thick](A,B,C,D)
\tkzDrawSegments[thick](A,E B,E)
% step4-1标点
\tkzLabelPoints[left](A)
\tkzLabelPoints[below right](B)
\tkzLabelPoints[above](D,E)
\tkzLabelPoints[above right](C)
% step4-2标角度
\tkzLabelAngle[pos=.85,font=\small](E,A,D){1} 
\tkzMarkAngle[size=.5](E,A,D)
\tkzLabelAngle[pos=.65,font=\small](B,A,E){2} 
\tkzMarkAngle[size=.35](B,A,E)
\tkzLabelAngle[pos=.65,font=\small](E,B,A){3} 
\tkzMarkAngle[size=.35](E,B,A)
\tkzLabelAngle[pos=.75,font=\small](C,B,E){4} 
\tkzMarkAngle[size=.55](C,B,E)
\end{tikzpicture}
\end{document}

image.png

0.提问要给代码,即使是只有矩阵的内容的代码。给代码可以大大方便别人回答。
1.在命令行输入「texdoc nicematrix」回车
2.翻到Page 69,学!

image.png

我认为的最佳实践,当涉及「圆锥曲线」时,比较系统化的作图方式是基于tkz-elements,下面的代码虽然较长,但是逻辑清晰可拓展性强,方便多次复用。

\documentclass[tikz,border=2pt]{standalone}
\usepackage{tkz-euclide,tkz-elements}
\directlua{
    init_elements()
    z.O = point(0, 0)
    z.C = point(2, 1)
    z.P = point(4, 4)
    % -- 准线
    z.L1 = point(-1,-4.5)
    z.L2 = point(-1,4.5)
    L.line = line(z.L1, z.L2)
    % -- 抛物线
    z.F = point(1, 0)
    CO.PA = conic(z.F, L.line, 1)
    PA.PA = CO.PA:points(-4.5, 4.5, 300)
    % -- 定义圆
    z.c = point(0, 1)
    C.Cc = circle(z.C, z.c) 
    % -- 定义过P做圆C的切线
    L.T1,L.T2 = C.Cc:tangent_from(z.P)
    z.T1 = L.T1.pb
    z.T2 = L.T2.pb
}
\begin{document}
    \begin{tikzpicture}[scale=.4,smooth,line cap=round]
        \tkzGetNodes
        \tkzInit[xmin=-2,xmax=5.5,ymin=-4.5,ymax=4.5] 
        \tkzDrawX[noticks]\tkzDrawY[noticks]
        \tkzDrawCircle[red,thick](C,c)
        \tkzDrawPoints(O,P,C,T1,T2)
        \tkzLabelPoints[below left](O,P,C)
        \tkzDrawSegment[cyan,thick](L1,L2)
        \tkzDrawCoordinates[smooth,cyan,thick](PA.PA)
        \tkzDrawSegments[violet,thick](P,T1 T1,C C,T2 T2,P)
    \end{tikzpicture}
\end{document}

image.png

预期的目标效果是什么呢?

image.png

这个图中的c是一个node,圆周是node的边界,而你代码中:

\coordinate[label=left:$C$](C)at(2,1);
\draw[red](C)circle(2);
\draw(P)--(tangent cs:node=C,point={(P)},solution=1)--(C.center)--cycle;

圆周是一个path,你用tangent cs绘制的是对coordinateC的切线,而点是没有半径的,所以重合了...

BTW,下面这些包只有calc和你的问题有关。

\usetikzlibrary{
    % math,
    calc,
    % intersections,
    % through,
    % angles,
    arrows.meta,
    % shapes.geometric,
    % shadows,
    % quotes,
    % spy,
    % datavisualization,
    % datavisualization.formats.functions,
    % plotmarks
}

需要注意的是:

LaTeX2e内核中定义的\casesamsmath宏包重定义的cases环境并不相同。

\documentclass{article}
\begin{document}
\[
|x|=\cases{x,&if $x\ge0$;\cr 
-x,&otherwise.\cr}
\]
\end{document}

image.png

重点要转到关注amsmath.dtx中的有关定义:

% line 2604~2614
\renewenvironment{cases}{%
  \matrix@check\cases\env@cases
}{%
  \endarray\right.%
}
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  \array{@{}l@{\quad}l@{}}%
}

cases环境本质是是一个带\lbracearray环境,与\jot并无关系

所以...似乎patch一下\arraystretch即可实现第二个需求:

\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\makeatletter
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{2.5}%
  \array{@{}l@{\quad}l@{}}%
}
\makeatother
\begin{document}
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\[
\begin{cases}
    \dfrac{1}{1} + \dfrac{2}{2} \neq \dfrac{3}{3} \\
    \dfrac{1}{1} + \dfrac{2}{2} = \dfrac{3}{3}
\end{cases}
\]
\end{document}

image.png

嗯...效果并不是很好...

可以利用fgruler宏包给PDF加上标尺

%%使用paracol环境,可以发现文字高度没有变化
%%不使用paracol环境,文字高度变化

文字高度变化是什么意思(?)是和什么做对比的(?) 可否补充详细的对比图示....

\documentclass[
    oneside, % 让页面左右对称
    openany, % 去掉偶数面的空白页
]{book}
\usepackage{lipsum}
\usepackage[type=upperleft]{fgruler}
\usepackage[showframe]{geometry}
\usepackage{paracol}
\newcommand{\Chapter}[1]{%
\chapter{#1}%
\enlargethispage{-2.0cm}
}
\begin{document}
    %%使用paracol环境,可以发现文字高度没有变化
    \Chapter{title}
    \begin{paracol}{2}
        \lipsum[1-2]
    \end{paracol}
    %%不使用paracol环境,文字高度变化
    \Chapter{title}
    \lipsum[1-3]
\end{document}

image.png

改不动了....一定不会有后续了...Happy LaTeX3!

我食言了。

我还是觉得作为一名开发者,不能对latex3在七窍通了六窍的情况下就开始造轮子

过分使用AI只会陷入vibe coding这种「复制链接大脑,粘贴代替思考」的境地,事实上,对于\keys_value:nn查无此命令的幻觉应该是很容易通过texdoc interface3发觉的。

我删掉了大部分注释,也不打算做介绍了...

Claim:我没太注意ai给的tikz绘制细节,只是把l3keys的错误用法做了修改...

如果我没理解错.meta:n创建的是「元键」是用来创建多层级键值对的,也并不是「定义短名称作为别名,方便用户调用」,这 似乎 又是一个幻觉...

当一些错误混杂在基本正确的逻辑中,挺难debug的,遇到这种情况还是应该自己从最简单的「l3keys」例子开始,一步步测试,不要每次复制粘贴上百行代码...

  • 先实现tikz的绘图逻辑
  • 再学会如何用l3keys控制键值对
  • 最后封装tikzhl命令

一个不基于.initial:n的做法如下:

\documentclass{ctexart}
\usepackage{tikz}
\usetikzlibrary{calc}
\ExplSyntaxOn
\tl_new:N \l_tikzhl_highlight_color_tl
\tl_new:N \l_tikzhl_underline_thickness_tl
\tl_new:N \l_tikzhl_underline_color_tl
\tl_new:N \l_tikzhl_corner_radius_tl
\dim_new:N \l_tikzhl_padding_dim
\dim_new:N \l_tikzhl_underline_offset_dim
\keys_define:nn { tikzhl } {
  hlcolor .tl_set:N = \l_tikzhl_highlight_color_tl,
  ulcolor .tl_set:N =\l_tikzhl_underline_color_tl,
  thickness .tl_set:N = \l_tikzhl_underline_thickness_tl,
  radius .tl_set:N = \l_tikzhl_corner_radius_tl,
}
\keys_set:nn { tikzhl } {
  hlcolor = yellow!30,
  ulcolor= blue,      
  thickness = 1.5pt,
  radius = 0pt,
}
\NewDocumentCommand{\tikzhl}{ O{} m }{%
  \tikz[baseline=(current~bounding~box.base)]{
    % 设置内部维度变量的值。
    \dim_set:Nn \l_tikzhl_padding_dim { 1pt }% 文本与高亮框的内边距
    \dim_set:Nn \l_tikzhl_underline_offset_dim { 1pt }% 下划线距离文本的垂直偏移
    \keys_set:nn { tikzhl } { #1 }
    % 1. 绘制文本节点,并应用高亮背景和圆角。
    \node[
      inner~sep=\l_tikzhl_padding_dim,
      fill=\l_tikzhl_highlight_color_tl,
      text=black,
      anchor=base,
      rounded~corners=\l_tikzhl_corner_radius_tl,
    ] (textnode) {#2};% 节点内容为 #2 (强制参数)
    % 2. 绘制加粗下划线。
    \draw[
      draw=\l_tikzhl_underline_color_tl,
      line~width=\l_tikzhl_underline_thickness_tl
     ] ($(textnode.south~west) + (0,-\dim_use:N \l_tikzhl_underline_offset_dim)$) 
    -- ($(textnode.south~east) + (0,-\dim_use:N \l_tikzhl_underline_offset_dim)$);
  }%
}
\ExplSyntaxOff

\begin{document}

这是一个示例文本,其中包含一些 \tikzhl{需要高亮} 的内容。
你可以看到它和周围的文本在同一行,并且带有加粗的下划线。

% --- 正确的调用方式示例 (使用键值对) ---

% 1. 仅改变高亮背景颜色
\tikzhl[hlcolor=green!20]{这是绿色高亮}。

% 2. 仅改变下划线粗细
\tikzhl[thickness=2pt]{这是粗下划线}。

% 3. 仅改变下划线颜色
\tikzhl[ulcolor=red]{这是红色下划线}。

% 4. 设置圆角半径
\tikzhl[radius=3pt]{这个是圆角高亮}。

% 5. 组合使用:紫色高亮,3pt下划线,紫色下划线,3pt圆角
\tikzhl[hlcolor=violet!20, thickness=3pt, ulcolor=purple, radius=3pt]{复杂组合示例}。

% 6. 所有参数都使用默认值
默认样式:\tikzhl{默认样式}。

\end{document}

image.png

希望下次不要直接把ai的代码丢上来,要注意到这个问题其实不是集中在一个关键点上,而是泛泛而谈「但是无法运行,有很多报错,请问是什么原因?」,后来者看到这个页面的时候很难反应过来这是在「改l3keys的不正确语法」。

请问是否可以增加绘制外部框线的属性,包括可以调节外部框线的粗细,圆角和颜色?

没看太明白,上面好像已经实现了控制(?)...tikz您是高手,应该可以自己搞定...

这个问题太长了,目测OP在原问题上花的时间和精力并不多。

没有细看,但是AI在一个如此庞大的和精细的需求里是不给力的

但是无法运行,有很多报错

那理应贴出来报错信息。

side-notes:

\usepackage{xcolor} % 用于定义颜色
\usepackage{xparse} % 用于定义带有可选参数和默认值的命令

这两行都是不需要的,tikz内部调用了xcolor;且xparse早已进入内核,因此都不需要显式调用。


第一个报错是:

! Undefined control sequence.
<argument> ..._highlight_color_tl {\keys_value:nn
                                                  {tikzhl}{highlight-color}}
l.91 ...其中包含一些 \tikzhl{需要高亮}
                                                   的内容。
?

很显然,在interface3.pdf中并不能搜索到\keys_value:nn这个API...

\tl_set:Nx \l_tikzhl_highlight_color_tl { \keys_value:nn { tikzhl } { highlight-color } }
\tl_set:Nx \l_tikzhl_underline_thickness_tl { \keys_value:nn { tikzhl } { underline-thickness } }
\tl_set:Nx \l_tikzhl_underline_color_tl { \keys_value:nn { tikzhl } { underline-color } }
\tl_set:Nx \l_tikzhl_corner_radius_tl { \keys_value:nn { tikzhl } { corner-radius } }

上面几行都显然是是错的...

一般来说,l3keys里类似的需求也许会这么写:

\keys_define:nn { foo / blockstyle } {
    bordercolor .tl_set:N = \l_foo_border_color_tl,
    backgroundcolor .tl_set:N = \l_foo_background_color_tl,
    textcolor .tl_set:N = \l_foo_text_color_tl,
    textstyle .tl_set:N = \l_foo_text_style_tl,
}

但这基本上要重写代码,而且需要别人先理解你的原始需求,再理解ai的实现过程,我不喜欢读ai生产的垃圾....


第二个错误:

! Package pgfkeys Error: I do not know the key '/tikz/innersep', to which you p
assed '\dim_use:N \l_tikzhl_padding_dim ', and I am going to ignore it. Perhaps
 you misspelled it.

See the pgfkeys package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.91 ...其中包含一些 \tikzhl{需要高亮}
                                                   的内容。
?

另一个很显然的问题是,在\ExplSyntaxOn/Off对里,空格均会被忽略,因此带空格的rounded cornersline width都应该加上~.....

改不动了....一定不会有后续了...Happy LaTeX3!

此事在lshort中亦有记载

image.png

0.你原先的代码还是有大量和问题无关的内容,他们理应被删去,不要给别人增加代码阅读量!!:

\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{float}
\usepackage{cases}
\usepackage[font={small,rm}]{caption}
\DeclareGraphicsRule{.jpg}{eps}{.bb}{}
\newtheorem{theorem}{Theorem}
\newtheorem{corollary}{Corollary}
\newtheorem{definition}{Definition}
\newtheorem{lemma}{Lemma}
\newtheorem{proposition}{Proposition}
\newtheorem{algorithm}{Algorithm}
\newtheorem{assumption}{Assumption}
\newtheorem{remark}{Remark}
\renewcommand{\baselinestretch}{1.0}
\allowdisplaybreaks

1.加上\nonumber就可以去掉编号
2.我在最后一行加上了\quad,让末两行看上去是「同一个公式(折行)」

\documentclass[twocolumn]{IEEEtran}
\usepackage{mathrsfs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{empheq}
\begin{document}
\begin{subequations}
\begin{empheq}
[left={\textbf{OP1}:\empheqlbrace}]{align}
&\underset{u}{\min}~ \psi\\
&\mathrm{s.t.}~~J_{\infty}(s) \leq \psi\\
&\underset{p}{\max}\left|\left[u(s)\right]_p\right|\leq \bar{u}, \\
&\underset{q}{\max}\left|\left[x(s+1|s)\right]_q\right|\leq \bar{x},\\                                     
& \mathscr{E}\{V(\phi(s))\}-V(\phi(s))\\
& \quad \leq  -z^{\mathrm{T}}(s)z(s)+\rho d^{\mathrm{T}}(s)d(s). \nonumber
\end{empheq}
\end{subequations}
\end{document}

image.png


Edit:

感觉这样更好看...

换行后又多增加一个标号1f(其实是一个公式),需要如何去掉1f呢?

表意不明,差评!

\documentclass[twocolumn]{IEEEtran}
\usepackage{mathrsfs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{empheq}
\begin{document}
\begin{subequations}
\begin{empheq}
[left={\textbf{OP1}:\empheqlbrace}]{align}
&\underset{u}{\min}~ \psi\\
&\mathrm{s.t.}~~J_{\infty}(s) \leq \psi\\
&\underset{p}{\max}\left|\left[u(s)\right]_p\right|\leq \bar{u}, \\
&\underset{q}{\max}\left|\left[x(s+1|s)\right]_q\right|\leq \bar{x},\\                                     
& \mathscr{E}\{V(\phi(s))\}-V(\phi(s))\nonumber\\
& \qquad \leq  -z^{\mathrm{T}}(s)z(s)+\rho d^{\mathrm{T}}(s)d(s). 
\end{empheq}
\end{subequations}
\end{document}

image.png

需求(a) 不希望「同解,求值」出现在第二栏,改用\vspace而不是\vspace*即可:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值.
        \vspace{8cm}
        
        (4) 已知齐次线性方程组 
\end{document}

image.png

需求(b) 希望得到可跨行的\vspace:

参考链接: https://tex.stackexchange.com/questions/601243/vspace-at-the-end-of-a-page

方法一:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
% % https://tex.stackexchange.com/a/601258/322482
\usepackage{forloop}
\newcounter{vspaceinc}
\newcommand\xvspace[2]{\par\leavevmode%
  \forloop{vspaceinc}{0}{\thevspaceinc<#1}{%
  \vspace{\dimexpr1#2-\baselineskip-\parskip}\leavevmode\par}%
}
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值.
        \xvspace{12}{cm}
        
        (4) 已知齐次线性方程组 
\end{document}

方法二:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
% https://tex.stackexchange.com/a/601262/322482
\newlength{\gapinsert}
\newcommand{\insertgap}[1]{%
  \par
  \ifdim\dimexpr\pagegoal-\pagetotal<#1
    % Capture space remaining after page break
    \setlength{\gapinsert}{\dimexpr#1-\pagegoal+\pagetotal}%
    \pagebreak% Insert page break
    \vspace*{\gapinsert}% Insert additional/remaining gap; https://tex.stackexchange.com/q/33370/5764
  \else
    % Enough space available on page
    \vspace{#1}% Insert regular vspace
  \fi
}
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值.
        \insertgap{12cm}
        
        (4) 已知齐次线性方程组 
\end{document}

image.png

@u73286 Eureka老师补充了一个回答,基于tikzfadings库:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}

% the clipping text
\begin{tikzfadingfrompicture}[name=title]
  \node [text=transparent!0, text width=0.7\paperwidth, align=center, font=\fontfamily{ptm}\bfseries\scshape, scale=3]
    {TH};
\end{tikzfadingfrompicture}

% use it to clip your image
\begin{tikzpicture}
  \node[scope fading=title,fit fading=false] (0,0) {
    \begin{tikzpicture}
      \shade[left color=red, right color=blue] (0,0) rectangle (2,1);
    \end{tikzpicture}
  };
\end{tikzpicture}
\end{document}

image.png

巧妇也难为无米之炊...

是不是应该贴一个能体现你问题的代码例子...包括模板的链接,也建议贴一贴...

另外,不是所有文章在被引用时都会「变为可以点击的超链接形式」

image.png

虽然我不太熟悉beamer...

但也许可以在文档第九章里简单用\visible叠层规则实现(?)

\documentclass{ctexbeamer}
\newcommand\myparaphase[1]{%
    \textcolor{red}{#1}%
}%
\begin{document}
\begin{frame}{屈原列传}
屈原者,名平,楚之同姓(
\visible<2->{\myparaphase{相同姓氏}}%<-吞掉空格
)也。为楚怀王左徒。博闻强志,明于治(
\visible<3->{\myparaphase{指国家安定}}%
)乱(
\visible<4->{\myparaphase{指国家动荡}}%
) ,娴(
\visible<5->{\myparaphase{熟悉}}%
)于辞令。入则与王图议国事,以出号令;出则接遇宾客,应对诸侯。王甚任之。
\end{frame}
\end{document}

mweres.gif

发布
问题