先 Mark 一下。其实可以用 TikZ 生成 PDF 动图的,有空了我来补充上具体方法。
先 Mark 一下。其实可以用 TikZ 生成 PDF 动图的,有空了我来补充上具体方法。
下次请给完整的代码,可以参考一下下面的代码:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
r_s = 1 - \dfrac{\displaystyle 6\sum_{i=1}^n}{n(n^2 - 1)}
\end{equation*}
\end{document}
效果:
但是我觉得这样真的不好看 ...
默认的格式不满足你的需求,那么你可以自定义, 修改下面这行内容就行了:
\kern10ex\inserttocsection\par}
比如我这里修改成了 10ex
, 可自行修改为你喜欢的宽度. 完整代码如下:
\documentclass{beamer}
\setbeamertemplate{section in toc}{%
\leavevmode\leftskip=1.75ex%
\llap{%
\hbox to 2.25ex{\hfil\inserttocsectionnumber.\hfil}}%
\kern10ex\inserttocsection\par}
\begin{document}
\frame{
\contentsname
\tableofcontents
}
\section{sectionone}
\frame{\frametitle{sectionone}some text}
\section{sectiontwo}
\frame{\frametitle{sectiontwo}some text}
\end{document}
你也可以写得再规范一点, 就像下面这样:
\documentclass{beamer}
\defbeamertemplate{section in toc}{Your style}{%
\leavevmode\leftskip=1.75ex%
\llap{%
\hbox to 2.25ex{\hfil\inserttocsectionnumber.\hfil}}%
\kern10ex\inserttocsection\par}
\setbeamertemplate{section in toc}[Your style]
\begin{document}
\frame{
\contentsname
\tableofcontents
}
\section{sectionone}
\frame{\frametitle{sectionone}some text}
\section{sectiontwo}
\frame{\frametitle{sectiontwo}some text}
\end{document}
二者的效果是一致的, 编译结果如下:
使用 LaTeX 自带的 picture 环境 + LaTeX 3 手搓了一个, 没有使用其它的任何宏包. 且带圈数字的大小会根据当前文档的字体大小自动调整.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage{xcolor}
\ExplSyntaxOn\makeatletter
\NewDocumentCommand{\circlenum}{O{black}m}
{
\__circle_num:nn {#1}{#2}
}
%%%%% box typesetting config %%%%%
\fp_const:Nn \c__circle_num_scale_fp { .85 }
\dim_const:Nn \c_circle_num_wd_dim { \f@size pt }
\dim_const:Nn \c__circle_num_typeset_box_dp { 1.6pt }
%%%%% box typesetting config %%%%%
\box_new:N \l__circle_num_box
\box_new:N \l__circle_num_typeset_box
\cs_set_protected:Npn \__circle_num:nn #1#2
{
% scale number
\hbox_set:Nn \l__circle_num_box { #2 }
\fp_set:Nn \l_tmpa_fp
{
\dim_ratio:nn
{ \fp_use:N \c__circle_num_scale_fp\c_circle_num_wd_dim }
{ \box_wd:N \l__circle_num_box }
}
\box_scale:Nnn \l__circle_num_box
{
\fp_min:nn {\fp_use:N \l_tmpa_fp}{1}
}{ 1 }
% typeset cirle num
\exp_args:Nne \__circle_num_typeset:nnN
{ \c_circle_num_wd_dim }
{ #1 }
\l__circle_num_box
}
\cs_new:Npn \__circle_num_typeset:nnN #1#2#3
{% #1:radius(float); #2:style; #3:content
\hbox_set:Nw \l__circle_num_typeset_box
\begin{picture}(0pt, 0pt)(\dim_eval:n {-\c_circle_num_wd_dim/2}, 0pt)
\put(0, \dim_to_decimal:n {\dim_eval:n {#1/2 - \c__circle_num_typeset_box_dp}})
{ \color{#2}\circle{#1} }
\put(0, 0) { \clap{\box_use_drop:N #3} }
\end{picture}
\hbox_set_end:
\box_set_wd:Nn \l__circle_num_typeset_box
{ \dim_use:N \c_circle_num_wd_dim }
\box_set_ht:Nn \l__circle_num_typeset_box
{
\dim_eval:n { \c_circle_num_wd_dim
- \c__circle_num_typeset_box_dp }
}
\box_set_dp:Nn \l__circle_num_typeset_box
{ \dim_use:N \c__circle_num_typeset_box_dp }
\box_use_drop:N \l__circle_num_typeset_box
}
\makeatother\ExplSyntaxOff
\begin{document}
\lipsum[1][1-2]
XXX, \kern2.3pt\relax1| 11| 111| 999| 9999| ZZZ
\def\vbar{\makebox[0pt]{|}}
\fboxsep0pt\relax
XXX, \fbox{\circlenum[blue]{11}}, \fbox{HxM}
XXX, \circlenum[red]{1}|\circlenum[blue]{11}|\circlenum[teal]{111}|%
\circlenum{\color{gray}999}|\circlenum[red]{\color{purple}9999}|\circlenum[yellow]{XXVII} ZZZ
\end{document}
如果用户需要自定义样式, 可以更改下面的配置:
%%%%% box typesetting config %%%%%
\fp_const:Nn \c__circle_num_scale_fp { .85 }
\dim_const:Nn \c_circle_num_wd_dim { \f@size pt }
\dim_const:Nn \c__circle_num_typeset_box_dp { 1.6pt }
%%%%% box typesetting config %%%%%
输出结果:
之前就说来回答的,拖了这么久 ...
代码如下:
\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{tcolorbox}
\usepackage{minted}
\setminted{autogobble}
\usepackage{xsimverb}
\ExplSyntaxOn
\box_new:N \l__code_example_box
\NewDocumentEnvironment{codeexample}{!O{auxB.txt}}
{
\xsim_file_write_start:nn {\c_false_bool}{#1}
}{
\xsim_file_write_stop:
\hbox_set:Nn \l__code_example_box { \input{#1} }
\dim_compare:nNnTF { \the \box_wd:N \l__code_example_box } > { .33\linewidth }
{ \begin{tcolorbox}[left=10pt, right=10pt] }
{ \begin{tcolorbox}[sidebyside, left=10pt, right=10pt] }
\inputminted{latex}{#1}
\tcblower
\box_use_drop:N \l__code_example_box
\end{tcolorbox}
}
\ExplSyntaxOff
\begin{document}
\begin{codeexample}[code-example.tex]
\begin{tikzpicture}
\draw[draw, dashed] (0, 0) rectangle (3, 3);
\draw[blue, ->] (0, 0) -- (2, 2);
\end{tikzpicture}
\end{codeexample}
\begin{codeexample}
\begin{tikzpicture}
\draw[draw, dashed] (0, 0) rectangle (7, 7);
\draw[red, ->] (0, 0) -- (6, 6);
\end{tikzpicture}
\end{codeexample}
\end{document}
运行结果如下:
功能简述:
1/3\linewidth
时,采用上下排版;反之,采用左右排版.你可以在这个基础上自己改进一下.
\documentclass{article}
\usepackage{aurical}
\usepackage{amsmath}
\usepackage{lipsum}
\DeclareSymbolFont{jana}{T1}{JanaSkrivana}{m}{n}
\DeclareSymbolFontAlphabet{\mathjana}{jana}
\begin{document}
\lipsum[1][1-4]
\[
\delta 1_{\{\lVert\delta\rVert\le1\}}\times(p-q)_t
+ (\delta 1_{\{\lVert\delta\rVert>1\}}\times p_t)
\]
\lipsum[1][5-8]
\[
\delta 1_{\{\lVert\delta\rVert\le1\}}\times(\mathjana{p}-\mathjana{q})_t
+ (\delta 1_{\{\lVert\delta\rVert>1\}}\times p_t)
\]
\end{document}
编译结果:
\measuredangle
对应 glyph 的具体定义在文件 mathsymb.mf
的 852 行,
%%% !!!
beginchar(measured_angle,12u#+2appr#,asc_height#,asc_depth#);
"Measured angle sign";
pickup tiny.nib;
rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u;
bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90);
(x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny);
y2r=y1r; z2r-z3r=whatever*(z2l-z3l);
filldraw stroke z1e--z2e--z3e;
%
numeric a;
y2l=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2l+0.5(h+d))+eps;
pos5(rth,0);
a=x5r-x2l; 0.5 y4=-d+eps; 0.5(x4-x2l)=a+-+min((0.5(y4-y2l)),a);
0.5(z6-z2l)=a*dir min((angle(z3l-z2l)-angle(z4-z2l)),90);
numeric t[];
tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r;
tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r);
t1=xpart(tmp_path intersectiontimes (z2l..z4));
t2=xpart(tmp_path intersectiontimes (z2l..z6));
z4r=point t1 of tmp_path; z6r=point t2 of tmp_path;
t3=xpart(tmpp_path intersectiontimes (z2l..z6));
t4=xpart(tmpp_path intersectiontimes (z2l..z4));
z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path;
filldraw subpath (t1,t2) of tmp_path
--subpath (t3,t4) of tmpp_path--cycle;
penlabels(1,2,3,4,5,6);
endchar;
似乎是需要用到 metatype1
? 待续 ...
再次更新, 首先把 mathprmt.mf
复制到一个单独的文件夹出来(方便后期更改), 然后再把上述 measured_angle
的定义摘抄出来, 形成如下的文件:
%%%%%%%%%%%%%% Preamble %%%%%%%%%%%%%%
% 1. variables like: 'appr#' are inside it:
input mathprmt; % load library 'mathbase.mf'
% 2. mode/math setup and function 'd_problem()' in 'mathsymb.mf'
mode_setup;
math_setup;
measured_angle := hex"3E"; % this variable must be known !!!
vardef d_problem(expr origin,top_lim,side_lim,breadth)=
save a,b,c;
a=abs((side_lim-xpart origin)/(top_lim-ypart origin));
b=abs(breadth/(top_lim-ypart origin));
begingroup
vardef f(expr c)=
(1+a**2-2a*b*c+(b*c)**2)*(c**2)<1
enddef;
c=solve f(0,breadth);
endgroup;
breadth*(c,1+-+c)
enddef;
%%%%%%%%%%% Main doc %%%%%%%%%%%%%%
beginchar(measured_angle,12u#+2appr#,asc_height#,asc_depth#);
"Measured angle sign";
pickup tiny.nib;
rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u;
bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90);
(x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny);
y2r=y1r; z2r-z3r=whatever*(z2l-z3l);
filldraw stroke z1e--z2e--z3e;
%
numeric a;
y2l=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2l+0.5(h+d))+eps;
pos5(rth,0);
a=x5r-x2l; 0.5 y4=-d+eps; 0.5(x4-x2l)=a+-+min((0.5(y4-y2l)),a);
0.5(z6-z2l)=a*dir min((angle(z3l-z2l)-angle(z4-z2l)),90);
numeric t[];
tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r;
tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r);
t1=xpart(tmp_path intersectiontimes (z2l..z4));
t2=xpart(tmp_path intersectiontimes (z2l..z6));
z4r=point t1 of tmp_path; z6r=point t2 of tmp_path;
t3=xpart(tmpp_path intersectiontimes (z2l..z6));
t4=xpart(tmpp_path intersectiontimes (z2l..z4));
z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path;
filldraw subpath (t1,t2) of tmp_path
--subpath (t3,t4) of tmpp_path--cycle;
penlabels(1,2,3,4,5,6);
endchar;
end
%%%% Compile it by %%%%%%
% mf measure_angle.mf
% gftodvi measure_angle.2602gf
% dvips measure_angle.dvi
% ps2pdf measure_angle.ps
依次使用如下的命令进行编译:
mf measure_angle.mf
gftodvi measure_angle.2602gf
dvips measure_angle.dvi
ps2pdf measure_angle.ps
然后你就可以看到 measure_angle.pdf
生成了, 截图如下:
目前想要在 TeX 中使用该符号还有两个问题:
tfm
文件, 或许还需要 .pk
文件;metatype1
里面的东西;下面讲解如何在 LaTeX 中使用这个符号. 首先在生成对应的 .tfm
文件(TeX Font Metric), 使用如下命令:
mf '\mode=ljfour; input measure_angle.mf'
然后你会看到类似如下的日志输出:
$ mf '\mode=ljfour; input measure_angle.mf'
This is METAFONT, Version 2.71828182 (TeX Live 2026/dev/Arch Linux) (preloaded base=mf)
(measure_angle.mf (mathprmt.mf (mathbase.mf)) [62] )
Font metrics written on measure_angle.tfm.
Output written on measure_angle.600gf (1 character, 196 bytes).
Transcript written on measure_angle.log.
我们生成了 measure_angle.tfm
和 measure_angle.600gf
两个文件(也许你生成的后一个文件中的数字不是 600
, 或者干脆就没有 600
这个字样). 现在你就需要把上面的 *gf
文件转化为 .pk
文件(Packed Raster - 点阵), 使用如下的命令:
gftopk measure_angle.600gf measure_angle.600pk
注意: 如果你上一步生成的是measure_angle.600gf
这种格式的文件, 那么上述的.600pk
中的600
则不能省略 !
随后在当前文件夹就会生成一个名为 measure_angle.600pk
的文件, 有了:
measure_angle.600pk
measure_angle.tfm
两个文件之后我们就可以在 LaTeX 中使用这个符号了, 使用方法如下:
\documentclass{article}
\newfont{\symbolangle}{measure_angle}
\newcommand{\measureangle}{{\symbolangle\char"3E}} % slot 编号请参见 measure_angle.mf 文件
\begin{document}
A new symbol by MetaFont: \measureangle $A = 45^\circ$
\end{document}
其实也可以直接使用 *.mf
文件, 那么你的当前工作路径下必须要有:
mathbase.mf
mathprmt.mf
measure_angle.mf
三个文件(并不是那么的方便). 在第一次编译时,会自动生成对应的 tfm
和 pk
文件, 之后编译时就不需要了. 第一次的编译日志大概长这样:
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2026/dev/Arch Linux) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo))
kpathsea: Running mktextfm measure_angle
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; ; nonstopmode; input measure_angle
This is METAFONT, Version 2.71828182 (TeX Live 2026/dev/Arch Linux) (preloaded base=mf)
(/home/<name>/Document/Temp/tex_program/mathabx/test/measure_angle.mf
(/home/<name>/Document/Temp/tex_program/mathabx/test/mathprmt.mf
(/home/<name>/Document/Temp/tex_program/mathabx/test/mathbase.mf)) [62] )
Font metrics written on measure_angle.tfm.
Output written on measure_angle.600gf (1 character, 196 bytes).
Transcript written on measure_angle.log.
mktextfm: /home/<name>/Document/Temp/tex_program/mathabx/test/measure_angle.tfm: successfully generated.
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def) (./test.aux)
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./test.aux) ) <./measur
e_angle.600pk></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb><
/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb>
Output written on test.pdf (1 page, 23647 bytes).
Transcript written on test.log.
第二次的编译日志大概长这样:
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2026/dev/Arch Linux) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def) (./test.aux)
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./test.aux) )</usr/shar
e/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texmf-dist/f
onts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/fonts/type1/publ
ic/amsfonts/cm/cmsy7.pfb>
Output written on test.pdf (1 page, 31385 bytes).
Transcript written on test.log.
编译结果如下:
但是上面的符号在 pdf 里面看起来是比较奇怪的(但是它在纸张上的打印效果是很棒的), 因为它是点阵字体,想要它看起来光滑一点, 没有毛边,那么就需要去自己去修改
pdftex.map
文件, 如果你是用的是 pdfTeX
引擎xdvipdfm
的配置文件, 如果你使用的是 XeTeX
引擎.上面其实还有一个问题 -- \measureangle
不能嵌套在公式环境中, 下次解决.
所以这次就写到这里了, 待续 ...
我又回来了, 这次我更新 Type1 字体相关的内容了. 有以下的几种方法可以把 MetaFont 转为 Postscript Type1 字体:
前两种方法可能是年代过于久远,存在一系列的兼容性问题; 第四种方法编译不通过; 所以我们采用第三种方法.
宏包mathabx
其实也生成了一系列的*.pfb
文件, 在如下的位置:texlive\2024\texmf-dist\fonts\type1\public\mathabx-type1
.
首先生成 *.pfb
文件, 使用如下命令:
mftrace --formats=pfb measure_angle.mf
然后就可以在 pdfTeX 下使用了,完整编译示例如下:
\documentclass{article}
\pdfmapline{+measure_angle < ec.enc < measure_angle.pfb}
\newfont{\symbolangle}{measure_angle}
\newcommand{\measureangle}{{\symbolangle\char"3E}}
\begin{document}
A new symbol by MetaFont: \measureangle A$ = 45^\circ$
\end{document}
编译结果如下:
可以看到,已经成功了, 没有了上面点整字体的那种像素点了.
注意:这个转化效果其实是很差的, mftrace
没有很好地处理这个符号的轮廓, 采用前两种方法生成的轮廓就精确很多. 下面的图片摘自文章: Generating Type 1 Fonts from METAFONT Sources
这个答案目前存在的问题是很多的, 但是之后不会再更新了. 尽管存在许多的问题, 但是至少我们明白了一个字体(符号)是怎么设计的, 字体的配置文件是怎么写的, (La)TeX 是怎么调用这个字体的. 后续我应该会更新一系列的和字体相关的文章, 来系统地讲一讲 (La)TeX 中的字体知识.
大致思路如下:
Reference:
仅仅使用 tabular
来实现, 大概是下面这样:
\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\lipsum[1][1-3]
\begin{equation}
\def\arraystretch{1.7}
\addtolength{\tabcolsep}{-3pt}
\begin{tabular}{rlrllll}
$\frac{1}{\sqrt{2}}y_1$ & $-$ & $\frac{1}{\sqrt{2}}y_2 $ & & & = & $f_1$\\
$\frac{1}{\sqrt{2}}y_1$ & $+$ & $\frac{1}{\sqrt{2}}y_2 $ & & & = & $f_2$\\
& $\textcolor{red}{+}$ & $\frac{1}{\sqrt{2}}y_2 $ & $+$ & $y_3$ & = & $f_3$\\
& $\textcolor{red}{+}$ & $-\frac{1}{\sqrt{2}}y_2$ & & & = & $f_4$\\
$\frac{1}{\sqrt{2}}y_1$ & & & $-$ & $y_3$ & = & $f_5$\\
$-\frac{1}{\sqrt{2}}y_1$ & & & & & = & $f_6$\\
\end{tabular}
\end{equation}
\lipsum[1][4-6]
\end{document}
用 tabular
比 align
之类的直观一点, 就是会多打一些 $
;如果想少打一些 &
, $
之类的符号,可以手搓一个表格数据解析的函数,但是感觉没必要(去用 tabularray
就好了)。
无非就是堆盒子嘛,不需要用 tikz
这种大杀器的, 也不需要用 l3coffin
之类的东西,虽然用这两个更加的简单. 代码如下:
\documentclass{article}
\usepackage[showframe, textwidth=18cm]{geometry}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{lipsum}
\ExplSyntaxOn\makeatletter
\cs_set_protected:Npn \__item_align:nnn #1#2#3
{% #1:cmd, #2:width, #3:object
\hb@xt@#2{
\tl_map_inline:nn {#3}
{
\seq_put_right:No \l_tmpa_seq {\exp_not:N #1{##1}}
}
\edef\seq@count{\seq_count:N \l_tmpa_seq}
\seq_map_inline:Nn \l_tmpa_seq
{
\edef\item@width{\dim_eval:n {#2/(\seq@count+1)}}
\hskip\item@width\clap{##1}
}\hskip\item@width\hss
}
}
\NewDocumentCommand\itemAlign{O{}mm}
{
\__item_align:nnn {#1}{#2}{#3}
}
\makeatother\ExplSyntaxOff
\parindent0pt
\begin{document}
\itemAlign{\linewidth}{A}\par
\itemAlign{\linewidth}{AA}\par
\itemAlign{\linewidth}{{(A)}{(A)}{(A)}}\par
\vskip6em
\dotfill\par
\def\imageA{\includegraphics[width=5em]{example-image-a}}
\def\imageB{\includegraphics[width=5em]{example-image-b}}
\itemAlign{\linewidth}{\imageA}\par
\itemAlign{\linewidth}{\imageA\imageA}\par
\itemAlign{\linewidth}{\imageB\imageB\imageB}\par
\itemAlign{\linewidth}{\imageB\imageB\imageB\imageB}
\vskip6em
\dotfill\par
\def\parA{\parbox[c]{12em}{\lipsum[1][1-2]}}
\def\parB{\parbox[c]{12em}{\lipsum[1][3-5]}}
\itemAlign[\sffamily]{\linewidth}{\parA}\par
\itemAlign[\color{red}]{\linewidth}{\parA\parA}\par
\itemAlign[\fbox]{\linewidth}{\parB\parB\parB}
\end{document}
编译结果如下:
注意事项:
\itemAlign
第二个参数中对象的分割方式,可以把 \tl_map_inline:nn
换为 \clist_map_inline:nn
之类的函数.\␣
或 ~
替代.不知道题主有没有解决这个 cref 的问题,所以我这里来推荐一下我自己写的这个模板,它可以很方便的处理上面的 定理类环境样式
定制与 cref
问题。
cref
上,我这个模板内置了 cleveref
和 zref-clever
两种兼容方案(因为最新的 cleveref
在中文环境下出了点问题)使用我这个模板,对应的解决方案如下:
\documentclass[lang=cn, fancy]{ztex}
\makeatletter
\zthmstylenew{
styleA={
begin={
\begin{tcolorbox}[
enhanced jigsaw,
breakable, sharp corners,
colframe=\thm@tmp@color,
top=2ex, boxrule=2pt, toprule=0pt,
fonttitle=\large\bfseries, colback=white,
attach boxed title to top left={xshift=3em,yshift=-\tcboxedtitleheight/2},
coltitle=\thm@tmp@color, title={\zthmname~\zthmnumber},
boxed title style={%
empty, left=1pt, right=1pt, bottom=0pt,
overlay={%
\draw[color=\thm@tmp@color,line width=2pt,line cap=round]
([yshift=-1pt]frame.west)--
++(-2.9em,0) ([yshift=-1pt]frame.east)--
++(3em,0);
}
},
]
},
end = {\end{tcolorbox}},
}
}
\makeatother
\zthmstyle{styleA}
\zthmlang{en}
\usepackage{zhlipsum}
\usepackage{lipsum}
\begin{document}
\section{FIRST}
\lipsum[1][1-2]
\begin{definition}[DEF-TEST]\label{def:A}
\zhlipsum[1]
\end{definition}
\lipsum[1][3-5] -- \cref{thm:A}.
\vspace*{13em}
\section{SECOND}
\begin{theorem}[THM-TEST]\label{thm:A}
\lipsum[1]
\end{theorem}
\lipsum[1][3-5] -- \cref{def:A}.
\end{document}
对应的样式代码是直接抄的 @u70550 的, 加了一丢丢的改动.
编译结果:
如果有兴趣使用我这个模板,我可以再发给你,因为目前我这模板还没有发布.
原始代码报错是因为 \nolinebreak
只能在水平模式使用, 而段首是垂直模式.几个注意的点:
\RequirePackage
, 而是 \usepackage
命令;g
参数不推荐使用, 类似的还有 G
, l
, u
;color
和 xcolor
, 单独一个 xcolor
已经足够.修改后的代码如下:
\documentclass[a4paper]{ctexart}
\usepackage{xcolor}
\NewDocumentCommand \hh{m}{%
\IfNoValueTF{#1}{%
\,\underline{\hbox to 1cm{}}\,
}{%
\textcolor[rgb]{1.00,0.00,0.00}{\underline{#1}}%
}%
}
\def\modeCheck{\ifvmode Vmode \else Hmode \fi}
\begin{document}
删除这一行汉字会运行出错\hh{123}
\hh{123}
\modeCheck\modeCheck
\end{document}
运行结果:
一个基于 expl3 的方法如下:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\ExplSyntaxOn
\cs_generate_variant:Nn \prg_replicate:nn {e}
\cs_new:Npn \three_digits:n #1
{% to keep expandable
\prg_replicate:en {3-\tl_count:n {#1}}{0} #1
}
\newcommand\PDFInclude[2][1]{
\int_step_inline:nnn {#1}{#2}{
%\includegraphics[width=5cm]{
\three_digits:n {##1}.pdf\par
%}
}
}
\ExplSyntaxOff
An simple TEST I as follows:\par
\PDFInclude{10}
An simple TEST II as follows:\par
\PDFInclude[95]{111}
\end{document}
运行结果如下:
你可以把上面的 \PDFInclude
命令自己加以改造以符合自己的需求.
在表格内部嵌套一个 bmatrix
就行了, 参见代码:
\documentclass{article}
\usepackage{booktabs}
\usepackage{amsmath}
\begin{document}
\begin{tabular}{cccc}
\toprule
$k$ & 0 & 1 & 2 \\
$\rho_k$ & $\begin{bmatrix}0\\1\\0\\0\end{bmatrix}$ & $\begin{bmatrix}0.3673\\0.3679\\0.1839\\0.0803\end{bmatrix}$ & $\begin{bmatrix}0\\0\\0\\1\end{bmatrix}$ \\
$\mu_k$ & 1 & 1 & 1 \\
\bottomrule
\end{tabular}
\end{document}
编译结果:
其实这几个问题的共同原因都在 \chapter
命令的定义中了, 参见 book.cls
中的定义:
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
这个命令里面的 \thispagestyle{plain}
就产生了这个页码. 而对应的 \tableofcontents
的定义如下:
\newcommand\tableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
这个里面调用的是 \chapter*
命令,其实就是上面的那个 \@schapter
命令. 所以说解决办法也就很简单了, 在一个局部里面, 把 \tableofcontents
内部的这个 \chapter*
改一下就行了. 你可以选择重定义前者,也可以选择重定义后者. 这里我使用前者:
\documentclass[landscape,openany]{book}
\usepackage[a6paper]{geometry}
\makeatletter
\renewcommand\tableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\@schapter{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
\makeatother
\begin{document}
\pagestyle{empty}
\tableofcontents
\chapter{First}
\chapter{Second}
\chapter{Third}
\chapter{First}
\chapter{Second}
\chapter{Third}
\chapter{First}
\chapter{Second}
\chapter{Third}
\end{document}
编译结果如下:
为了更好的理解这个问题,你可以试试下面这个例子:
\documentclass[landscape,openany]{book}
\usepackage[a6paper]{geometry}
\makeatletter
\begin{document}
\pagestyle{empty}
\@schapter{Contents}
\thispagestyle{plain} % comment this line to test page style
\@starttoc{toc}
\chapter{First}
\chapter{Second}
\chapter{Third}
\chapter{First}
\chapter{Second}
\chapter{Third}
\chapter{First}
\chapter{Second}
\chapter{Third}
\end{document}
至于你后面提到的 tocloft
宏包,你可以自己去看它的实现.
你提问中的 cmu
疑似拼写有误? 回到问题本身:是这样的,你可以从原始的 Computer Modern math
中把 \int
, \sum
这两个符号给 偷过来. 具体的示例如下:
% TeX-Program: pdflatex
\documentclass{article}
\usepackage{stix}
\DeclareSymbolFont{cmmlargesymbols}{OMX}{cmex}{m}{n}
\DeclareMathDelimiter{\Newint}{\mathop}{cmmlargesymbols}{"52}{cmmlargesymbols}{"5A}
\DeclareMathDelimiter{\Newsum}{\mathop}{cmmlargesymbols}{"50}{cmmlargesymbols}{"58}
\begin{document}
stix style int $\int_a^b$ and sum $\sum_a^b$:
\[
\int_{a}^{b} x \;\mathrm{d}x = \sum_{i=1}^{\infty}\frac{x^2}{2} + C
\]
computer modern math style int $\Newint_a^b$ and sum $\Newsum_a^b$:
\[
\Newint\nolimits_{a}^{b} x \;\mathrm{d}x = \Newsum_{i=1}^{\infty}\frac{x^2}{2} + C
\]
\end{document}
编译结果:
- 当然,你可以无脑使用
unicode-math
这个宏包,不过就需要使用xetex
了,我这个方案的话,你可以在pdftex
下进行编译.- 目前这个
偷过来的方式比较的粗糙, 如果有后续要求,请继续提问
问 平面几何动点问题中的绘图方法