texdoc texdef
example
latexdef -c book -s mainmatter
texdoc texdef
latexdef -c book -s mainmatter
你可以使用
\def\sab#1{%
\expandafter\ifcase\csname c@#1\endcsname%
\or 甲%
\or 乙%
\or 丙%
\or 丁%
\or 戊%
\or 己%
\or 庚%
\or 辛%
\or 壬%
\or 癸%
\fi%
}
定义一种计数器(\sab
) Stems-and-Branches
(天干地支), 然后修改 \thefigure
\def\thefigure{\sab{figure}}
源码如下:
\documentclass{ctexart}
\usepackage{caption}
% Stems-and-Branches
\def\sab#1{%
\expandafter\ifcase\csname c@#1\endcsname%
\or 甲\or 乙\or 丙\or 丁\or 戊\or 己\or 庚\or 辛\or 壬\or 癸
\fi%
}
\def\thefigure{\sab{figure}}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\centering
\includegraphics[width = 5cm]{example-image}
\caption{this is a picture.}\label{fig:a}
\end{figure}
\begin{center}
\includegraphics[width = 5cm]{example-image-a}
\captionof{figure}{this is a fig.}\label{fig:b}
\end{center}
\verb|hahahhahahha and this is \ref{fig:a} and \ref{fig:b}| $==>$
hahahhahahha and this is \ref{fig:a} and \ref{fig:b}
\end{document}
LaTeX3
我就用 TeX
吧(如果待使用的文件在同一文件夹内,命名无规则且文件数量多,可以参考下
用LaTeX3通过遍历插入指定目录中的所有图像
% 使用LaTeX3遍历图像目录中的图像并实现插图
\documentclass{ctexart}
% 需要的宏包
\usepackage{expl3}
\usepackage{xparse}
\usepackage{graphicx}
\usepackage{zhlipsum}
% 开启LaTeX3环境
\ExplSyntaxOn
% 插图标签处理函数
\cs_new_protected:Nn \fig_label:N
{
#1 % 可以是\label 或 \ref
{
fig \c_colon_str
% 整数转换为小写罗马数字
\int_to_roman:n {\l_cnt_int}
}
}
% 声明计数整数变量,并赋初值为1
\int_new:N \l_cnt_int
\int_set:Nn \l_cnt_int {1}
% 声明文件名列表变量
\tl_new:N \l_figs_tl
% 创建clist
\clist_new:N \l_figs_clist
% 定义排版命令,默认排版当前目录下figs目录下的图像
\NewDocumentCommand{\figslist} {O{figs}}
{
% 调用命令“ls -m #1/*”命令列出当前指定目录下的文件,并保存在\l_figs_tl中
\sys_get_shell:nnN {ls~-m~#1/*}{}\l_figs_tl
% 设置clist
\clist_set:NV \l_figs_clist \l_figs_tl
% 遍历clist并实现插图及label和ref引用
\clist_map_inline:Nn \l_figs_clist
{
\zhlipsum[1]\par
如``图\fig_label:N \ref''所示\par
\begin{figure}[!htb]
\centering
\includegraphics[width=0.35\textwidth]{##1}
\caption{##1}
\fig_label:N \label
\end{figure}
\int_incr:N \l_cnt_int
}
}
\ExplSyntaxOff
\begin{document}
\figslist
\figslist[pics]
\end{document}
\documentclass{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsfonts,amssymb}
\usepackage{amsthm}
\begin{document}
aaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
\begin{flalign}
&\left\{
\begin{aligned}
x&=eq1\\
y&=eq2+1
\end{aligned}
\right.&
\end{flalign}
\end{document}
支持但不建议~
l3keys
而 l3keys
是不必要的\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand\mytest{m}{
\clist_map_inline:nn{A,B,C,D}{
\exp_args:Nx\tl_if_in:nnT{\text_uppercase:n{#1}}{##1}{##1}
}
}
\ExplSyntaxOff
\begin{document}
\mytest{A}\par
\mytest{B}\par
\mytest{C,A}\par
\mytest{abc}\par
\mytest{cABd}
\end{document}
第一个问题请看 lshort-zh-cn
第二个问题,如果只是单纯做这个效果,没必要分栏,minipage
即可
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{geometry}
\geometry{top=25mm,bottom=25mm,left=25mm,right=25mm,marginparwidth=20mm,marginparsep=5mm}
\begin{document}
\begin{minipage}{0.5\textwidth}
{\small
\[
\text{分类标准}
\begin{cases}
\text{保险经营}
\begin{cases}
\text{保险经营主体}
\begin{cases}
\text{公营保险}
\\
\text{民营保险}
\end{cases}
\\
\text{保险经营性质}
\begin{cases}
\text{营利保险}
\\
\text{非营利保险}
\end{cases}
\end{cases}
\\
\text{保险技术}
\begin{cases}
\text{计算技术}
\begin{cases}
\text{人寿保险}
\\
\text{非人寿保险}
\end{cases}
\\
\text{风险转嫁方式}
\begin{cases}
\text{足额风险}
\\
\text{不足额保险}
\\
\text{超额保险}
\end{cases}
\\
\text{业务承保方式}
\begin{cases}
\text{原保险}
\\
\text{再保险}
\\
\text{复合保险}
\\
\text{重复保险}
\\
\text{共同保险}
\end{cases}
\\
\text{给付方式}
\begin{cases}
\text{定额保险与损失保险}
\\
\text{定额保险与利益保险}
\\
\text{现金保险与实物保险}
\end{cases}
\end{cases}
\\
\text{保险政策}
\begin{cases}
\text{自愿保险与法定保险}
\\
\text{商业保险与社会保险}
\\
\text{普通保险与政策保险}
\end{cases}
\\
\text{立法形式}
\begin{cases}
\text{财产保险与人身保险}
\\
\text{损失保险与人身保险}
\\
\text{损害保险与人寿保险}
\\
\text{财产、意外保险与人寿、健康保险}
\end{cases}
\\
\text{经济因素}
\begin{cases}
\text{企业保险与个人保险}
\\
\text{团体保险与个人保险}
\\
\text{收入保险、财产保险、费用保险}
\end{cases}
\end{cases}
\]}
\end{minipage}
\hfill
\begin{minipage}[t]{0.5\textwidth}
\begin{tabular}{p{1.5cm}p{4.2cm}}
\hline
名词&解释
\\
\hline
再保险&保险人将其承担前的保险业务,部分或全部转移给其他保险人的一种保险
\\
复合保险&保险人以保险利益的全部或部分,分别向数个保险人投保相同种类保险,签订数个保险合同,其保险金额总和不超过保险价值的一种保险
\\
重复保险&投保人以同一保险标的、同一保险利益、同一危险事故分别向数个保险人订立合同的一种保险
\\
共同保险&投保人与两个以上的保险人之间,就同一保险利益、对同一危险共同缔结保险合同的一种保险
\\
普通保险&基于个人或经济单位风险保障的需要,经过自由选择而形成保险关系的一种保险
\\
收入保险&承保与工作能力的暂时或永久地、部分地丧失有关的经济损失
\\
费用保险&承保因无法预测的异常支出而造成的财产或收入上的损失
\\
\hline
\end{tabular}
\end{minipage}
\end{document}
1.请仔细阅读模板手册
最简单的办法就是使用 chinesefont = founder
到您的文档类选项. (当然您需要先下载字体)
效果如下:
当然, 这里的 \textbf
使用的是 FZHei-B01
字体
mwe:
\documentclass[lang=cn, 11pt,chinesefont = founder]{elegantbook}
\begin{document}
\begin{definition}{}{}
我要加粗{\bfseries 啦啦啦} \
我要加粗\textbf{啦啦啦}
\end{definition}
\end{document}
2.使用 chinesefont = ctexfont
(默认选项), 很明显缺失字形,你需要简单配置一下
在 elegantbook.cls
第 214 行附近, 将如下代码替换
\ifdefstring{\ELEGANT@chinesefont}{ctexfont}{
\RequirePackage[UTF8,scheme=plain]{ctex}
\xeCJKsetup{AutoFakeBold=true}
}{\relax}
替换为:
\ifdefstring{\ELEGANT@chinesefont}{ctexfont}{
\RequirePackage[UTF8,scheme=plain]{ctex}
\setCJKfamilyfont{kaishu} {KaiTi}[AutoFakeBold]
\renewcommand*{\kaishu}{\CJKfamily{kaishu}}
}{\relax}
mwe:
\documentclass[lang=cn, 11pt]{elegantbook}
\begin{document}
\begin{definition}{}{}
我要加粗{\bfseries 啦啦啦} \
我要加粗\textbf{啦啦啦}
\end{definition}
\end{document}
texdoc nicematrix
\documentclass{ctexart}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{calc}
\newtcolorbox{mybox}{
enhanced,
colbacktitle = white,
attach boxed title to top center={ yshift = 0pt},
title = 练习,
coltitle = cyan,
boxrule = 2pt,
frame code={
% 以下代码可实现取中点1
\fill[color = green] (title.north west)--(title.north east)--([xshift = 0.3cm,yshift =-1pt]$(title.north east)!0.5!(title.south east)$)
--(title.south east)--(title.south west)--([xshift = -0.3cm,yshift = -1pt]$(title.south west)!0.5!(title.north west)$)--cycle;
}
}
\begin{document}
\begin{mybox}
1.分别写出“两个三角形全等”和“两个三角形相似”的几个充要条件。\par
\end{mybox}
\end{document}
在 cumcmthesis.cls
文件中做如下修改即可
%line 467 ~ 468
\renewcommand\thesubsection{\arabic{section}\thinspace.\thinspace\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection\thinspace.\thinspace\arabic{subsubsection}}
改为
\renewcommand\thesubsection{\arabic{section}\texorpdfstring{\thinspace.\thinspace}\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection\texorpdfstring{\thinspace.\thinspace}\arabic{subsubsection}}
format.tex
\ExplSyntaxOn
\iow_new:N \l_count_file
\int_zero_new:N \l_topic_section_total_int
\msg_new:nnn{topic}{undefined}{the~topic~counter~undefined,~please~compile~again!}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[C]{\bfseries\thepage}
\file_if_exist:nTF{\c_sys_jobname_str.cnt}
{
\file_input:n {\c_sys_jobname_str.cnt}
\fancyfoot[L]{Total:~\textcolor{red}{\totaltopic}}
\fancyfoot[R]{Current~section:~\textcolor{red}{\tl_use:c {current\roman{section}}}}
}
{
\fancyfoot[L]{Total:~\textcolor{red}{??}}
\fancyfoot[R]{Current~section:~\textcolor{red}{??}}
\msg_warning:nn{topic}{undefined}
}
\cs_set_eq:NN \oldsection:n \section
\RenewDocumentCommand\section{som}
{
\int_compare:nNnF{\arabic{section}} = {0}
{
\iow_now:Nx \l_count_file {
\expandafter\def\exp_not:c{current\roman{section}}{\int_use:c {l_topic_section_\roman{section}_int}}
}
}
\IfBooleanTF{#1}
{
\oldsection:n*{#3}
}
{
\IfNoValueTF{#2}
{
\oldsection:n{#3}
}
{
\oldsection:n[#2]{#3}
}
}
\int_zero_new:c {l_topic_section_\roman{section}_int}
}
\cs_new:Npn \topic {
\group_begin:
\int_gincr:c {l_topic_section_\roman{section}_int}
{\bfseries\noindent Topic.\thesection.\int_use:c {l_topic_section_\roman{section}_int}}~
}
\cs_new:Npn \endtopic {
\par
\group_end:
}
\AtBeginDocument{
\iow_open:Nn \l_count_file {\c_sys_jobname_str.cnt}
}
\AtEndDocument{
\iow_now:Nx \l_count_file {
\expandafter\def\exp_not:c{current\roman{section}}{\int_use:c {l_topic_section_\roman{section}_int}}
}
\int_step_inline:nn{\arabic{section}}
{
\int_add:Nn \l_topic_section_total_int {\int_use:c {l_topic_section_\int_to_roman:n{#1}_int}}
}
\iow_now:Nx \l_count_file {
\def\noexpand\totaltopic{\int_use:N \l_topic_section_total_int}
}
\iow_close:N \l_count_file
}
\ExplSyntaxOff
main.tex
\documentclass{article}
\usepackage{fancyhdr,xcolor}
\usepackage[margin = 3cm]{geometry}
\input format
\title{title}
\author{author}
\begin{document}
\maketitle
\tableofcontents
\section{aaa}
\begin{topic}
aaa
\end{topic}
\begin{topic}
aaa
\end{topic}
\begin{topic}
aaa
\end{topic}
\begin{topic}
aaa
\end{topic}
\newpage
\section{bbb}
\begin{topic}
aaa
\end{topic}
\begin{topic}
aaa
\end{topic}
\newpage
\section{ccc}
\begin{topic}
aaa
\end{topic}
\end{document}
使用 titlesec 和 tikz 包试了一下
\documentclass{ctexbook}
\setCJKfamilyfont{kaiti}{KaiTi}[AutoFakeBold]
\usepackage[margin=2cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols}
\usepackage[explicit]{titlesec}
\titleformat{\chapter}
{}
{}
{0em}
{
\begin{tikzpicture}[remember picture,overlay]
\draw[cyan!50,step = 0.02\paperwidth] (current page.north west) grid ++ (\paperwidth,-5.12);
\node[font = \LARGE\bfseries\CJKfamily{kaiti},text = brown,] at ([yshift = -2.56cm]current page.north) {\tikz[baseline]{\node[anchor = base,cloud, cloud puffs=11, cloud ignores aspect, fill=cyan!50,]{第~\thechapter{}~章};} #1};
\end{tikzpicture}
}
\begin{document}
\chapter{葵花宝典}
欲练此功,必先自宫!
\chapter{九阴真经}
欲练此功,也要自宫!
\end{document}
效果如下:
caption
包lshort-zh-cn
第 3.6.1 小节\documentclass{article}
\usepackage{booktabs}%提供命令toprule、midrule、bottomrule
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{array}
\usepackage{bm}
\usepackage{booktabs}%提供命令toprule、midrule、bottomrule
\usepackage{float}%提供float浮动环境
\begin{document}
\begin{table}[H]
\caption{Predicted and measured values of the quadratic slope parameters in the$K\longrightarrow 3\pi$ amplitudes (Kambor $et$ $al$ 1992). All values are given in units of $10^{-8}$}.%标题
\centering%把表居中
\setlength{\tabcolsep}{.3cm}
\begin{tabular}{cr@{$\pm$}lr@{$\pm$}l}%四个c代表该表一共四列,内容全部居中
\toprule%第一道横线
Parameter&\multicolumn{2}{c}{Experimental value}&\multicolumn{2}{c}{Prediction}\\
\midrule%第二道横线
$\zeta_{1}$&$-0.47$ & $0.15$ & $-0.47$ & $0.18$\\
$\xi_{1}$&$-1.51$ & $ 0.30$&$-1.58 $ & $0.19$\\
$\zeta_{3}$&$-0.21$ & $ 0.08$&$-0.011$ & $ 0.006$\\
$\xi_{3}$&$-0.12$ & $ 0.17$& $0.092 $ & $ 0.030$\\
$\xi^{\prime}_{3}$&$-0.21$ & $ 0.51$&$-0.033$ & $ 0.077$\\
\bottomrule%第三道横线
\end{tabular}
\end{table}
\end{document}
仔细整理一下你的代码,其实你在嵌套循环
\begin{tikzpicture}
\foreach \x in{0,2} %2
{
\foreach \y in{0,-1} %2
{
\foreach \z in{A,B,C,D} %4
{
\foreach \m/\n/\l in{\x/\y/\z}
{
\node[draw] at(\m,\n){\l}; % 2 x 2 x 4 = 16
}
}
}
}
\end{tikzpicture}
循环次数分别是 2,2,4,1
. 所以一共是 2x2x4x1=16
次,你的这种想法我大概明白了,但是目前我并没有好的办法.
或许可以使用计数器来代替第三层循环,如下
\begin{tikzpicture}
\newcounter{node}
\setcounter{node}{1}
\foreach \x in{0,2} %2
{
\foreach \y in{0,-1} %2
{
\node[draw] at (\x,\y){\Alph{node}\stepcounter{node}};
}
}
\end{tikzpicture}
给另外一个例子,或许可以给你提供一点思路,如下:
我想构造两个循环,但是他们不嵌套,而是一一对应,第一层为1,2,3,4,...,10
, 第二层为2,4,6,8,...,20
,当然你可以使用:
\foreach \x/\y in {1/2,2/4,3/6,4/8,5/10,6/12,7/14,8/16,9/18,10/20}
{
...
}
这样固然是可行的, 但是难免有些繁琐, 毕竟两个循环的值是有函数关系的,那么可以:
方法一
\foreach \x in {1,2,...,10}
{
\pgfmathsetmacro{\y}{2*\x} % \y = 2*\x
\node[] at (\x,0) {\y};
}
方法二
\foreach \x [count=\xc] in {1,2,...,10}
{
\foreach \y [count=\yc] in {2,4,...,20}
{
\ifnum\xc=\yc
\node[] at (\x,0) {\y};
\fi
}
}
希望能够帮助到你!
关于二维数组,可以使用 LaTeX3
实现一个阉割版的 二维数组,
\documentclass{article}
\usepackage{tikz}
\begin{document}
\ExplSyntaxOn
\seq_new:N \l_node_row_seq
\seq_new:N \l_node_tmp_seq
\cs_set:Npn \GetArray #1 {
\seq_set_split:Nnn \l_node_row_seq {;} {#1}
\int_step_inline:nn{\seq_count:N \l_node_row_seq}
{
\seq_if_exist:cF {l_node_row_##1_seq}
{
\seq_new:c {l_node_row_##1_seq}
}
\exp_args:Ncx\seq_set_from_clist:Nn {l_node_row_##1_seq} {\seq_item:Nn \l_node_row_seq{##1}}
}
}
\cs_set:Npn \PrintArray [#1][#2] {
\tl_if_empty:nTF { #1 }
{
\tl_if_empty:nTF { #2 }
{
\seq_use:Nn \l_node_row_seq {,}
}
{
\int_step_inline:nn{\seq_count:N \l_node_row_seq}
{
\seq_put_right:Nn \l_node_tmp_seq {\seq_item:cn {l_node_row_##1_seq}{#2}}
}
\seq_use:Nn \l_node_tmp_seq {,}
}
}
{
\tl_if_empty:nTF {#2}
{
\seq_use:cn {l_node_row_#1_seq}{,}
}
{
\seq_item:cn {l_node_row_#1_seq}{#2}
}
}
}
\ExplSyntaxOff
\GetArray
{
A,B,C;
D,E,F;
G,H,I
}
\PrintArray[][]\par
\PrintArray[1][]\par
\PrintArray[][2]\par
\PrintArray[1][2]
\vspace*{1cm}
\begin{tikzpicture}
\GetArray
{
A,B,C;
D,E,F;
G,H,I
}
\foreach \x in {1,2,3}
{
\foreach \y in {1,2,3}
{
\node[draw] at (\x,\y) {\PrintArray[\x][\y]};
}
}
\end{tikzpicture}
\end{document}
问 如何查看文档类内置命令的源代码,如想查询book文档类里\mainmatter的代码,应该怎么做?