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

注册于 4年前

回答
117
文章
1
关注者
9

第一个问题请看 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.请仔细阅读模板手册
1.png
最简单的办法就是使用 chinesefont = founder 到您的文档类选项. (当然您需要先下载字体)
效果如下:
2.png
当然, 这里的 \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}

3.png

mwe:

\documentclass[lang=cn, 11pt]{elegantbook}
\begin{document}

\begin{definition}{}{}
我要加粗{\bfseries 啦啦啦} \
我要加粗\textbf{啦啦啦}
\end{definition}

\end{document}

  • title 内容默认白色,而你的背景也是白色.
  • 显示不全是因为你对 title 进行了平移,导致下面的 "内容" 框遮挡了它.
\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}

QQ截图20220926174848.png

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}}

使用 LaTeX3 做一个简单实现


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}

结果

1.png
2.png
3.png

使用 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}

效果如下:
1.png

2.png

  • 标题问题,请读 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}

QQ截图20220818202905.png

仔细整理一下你的代码,其实你在嵌套循环

\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}

QQ截图20220802234351.png

测试没有问, 请提供 mwe

\documentclass{article}
\usepackage{codehigh}
\usepackage[margin=1cm]{geometry}
\begin{document}
\makeatletter
\begin{demohigh}
 %\makeatletter
\def\@cmd[#1]#2{\textcolor{red}{#1} and (#2)}
\def\cmd{
  \@ifnextchar[{\@cmd}{\@cmd[default]}
}
\cmd{aaa}\par 
\cmd[bbb]{aaa}\par 

\def\@cmd[#1]#2{\c@md{} and \textcolor{red}{#1} and (#2)}
\def\cmd#1{
  \def\c@md{#1}\@ifnextchar[{\@cmd}{\@cmd[default]}
}
\cmd{aaa}{ccc}\par 
\cmd{aaa}[bbb]{ccc}    
 %\makeatother  

\end{demohigh}
\makeatother
\end{document}

编译环境
win11 + texlive2022 + xelatex && pdflatex
ASD.png

  • \def\@dnode[#1]#2#3#4{\node(#2)at(#3){#4};} 的问题,#1 没有传进去,改为

\def\@dnode[#1]#2#3#4{\node[#1](#2)at(#3){#4};}

  • LaTeX2e 提供了 \newcommand 命令可以定义一个带可选参数的命令,此外可以看看 xparse 宏包,其基于 LaTeX3 更加灵活
\makeatletter
\def\@dnode[#1]#2#3#4{\node[#1](#2)at(#3){#4};}
\def\dnode{\@ifnextchar[{\@dnode}{\@dnode[inner sep=2pt,fill=yellow]}}
\makeatother

\begin{tikzpicture}
  \dnode{a}{1,2}{\LaTeX}
  \dnode[draw,fill=red]{b}{3,2}{hello!}
\end{tikzpicture}

典型宏展开问题
报错信息如下

Package pgfkeys: I do not know the key '/tikz/\inns {2}' and I am going to ignore it. Perhaps you misspelled it.

也就是说 tikz\inns{2}(还没展开成 inner sep=2pt) 当作了键值, 但是它无法识别,为此我们必须改变 \node\inns 两个命令的展开顺序,做如下修改

  • 不使用 \NewDocumentCommand 来定义要展开的命令,使用 \def 或者 \newcommand
\newcommand{\inns}[1]{inner sep=#1pt} 
  • 改变宏展开顺序
\expandafter\node\expandafter[\inns{2}](b)at(1,0){B};

mwe

\documentclass{article}
\usepackage{tikz}
\begin{document}
\NewDocumentCommand\tik{m}{
\begin{tikzpicture}
#1
\end{tikzpicture}
}
\newcommand{\inns}[1]{inner sep=#1pt}

\tik{
\node(a)at(0,0){A};
\expandafter\node\expandafter[\inns{2}](b)at(1,0){B};
\draw(a)--(b);
}
\end{document}

另外 \NewDocumentCommand 命令定义的命令是受保护的,但是 xparse 包也提供了 \NewExpandableDocumentCommand,但经过测试失败,不知为何

简单回答一下

  • pgf/TiKZ 中有两个尺寸寄存器 \pgf@x \pgf@y 分别用于保存当前的坐标,(类似你的 \pgfgetlastxy)但是“很遗憾”,他们的单位都是 pt,如:
\makeatletter
\begin{tikzpicture}
\path (1,1);
\node[above right] at (1,1) {(\the\pgf@x,\the\pgf@y)};
\end{tikzpicture}
\makeatother

得到
QQ截图20220728222852.png

为此你需要将其转化为 cm, 可以定义一个命令

\def\pttocm#1{\pgfmathparse{#1/28.45274}\pgfmathresult}

pt 转化为 cm
一个完整的 mwe:

\documentclass{article}
\usepackage{tikz} 

\begin{document}
\def\pttocm#1{\pgfmathparse{#1/28.45274}\pgfmathresult}
\makeatletter
\begin{tikzpicture}
\path (1,1);
\node[above right] at (1,1) {(\pttocm{\the\pgf@x},\pttocm{\the\pgf@y})};
\end{tikzpicture}
\makeatother
\end{document}

QQ截图20220728223513.png

  • 此外,你的提问习惯不太好,希望你提问能够好好理解 mwe 一词,不然一大堆代码,没那么多人愿意帮你分析(个人观点)

tikz 画了一下,可以自己搬到 tcolorbox 里面

\documentclass[margin=.5cm]{standalone}
\usepackage{tikz,ctex}
\usepackage{fontawesome5}
\usetikzlibrary{arrows.meta,calc}

\begin{document}

\begin{tikzpicture}[thick]
\draw[] (0.4,0) arc(0:90:0.4) -- (0,1.6) arc(-90:0:0.4) --(5.6,2) arc(180:270:0.4) --(6,0.4) arc(90:180:0.4) --cycle;


\foreach \x in {(45:0.382),($(0,2)+(-45:0.382)$),($(6,2)+(225:0.382)$),($(6,0)+(135:0.382)$)}
{
  \node[inner sep=0pt,] at \x 
  {
   \begin{tikzpicture}
    \draw[fill=white,thick,rotate=45,line join=round,x=0.12cm,y=0.12cm] (1,0) to [out=180,in=-90] (0,1) to [out=-90,in=0] (-1,0) to[out=0,in=90] (0,-1) to[out=90,in=180] (1,0)--cycle;
   \end{tikzpicture}
  };
}

\draw[] (0.3,0.075) -| (0.075,0.3);
\draw[] (0.075,1.7) |- (0.3,2-0.075);
\draw[] (5.7,2-0.075) -| (6-0.075,1.7);
\draw[] (6-0.075,0.3) |- (5.7,0.075);

\draw[] (0.075,0.5) -- (0.075,1.5);
\draw[] (0.5,2-0.075) -- (5.5,2-0.075);
\draw[] (6-0.075,1.5) -- (6-0.075,0.5);
\draw[] (5.5,0.075) -- (0.5,0.075);


\node[font=\kaishu\bfseries] at (3,1.1) {奈何蝶飞去};
\node[font=\kaishu\bfseries,scale=0.6] at (3,1.5) {引蝶之章 第一幕};
\draw[line cap=round] (2,0.8) -- (4,0.8)node[midway,fill=white,inner sep=2pt,scale=0.6]{\faGg};

\node[font=\kaishu\bfseries,scale=0.6] at (3,0.45){已开启};
\end{tikzpicture}

\end{document}

QQ截图20220727100628.png

另外,楼上@u40 啸行的答案很有参考性!!!

\begin{tikzpicture}
  \node[] (a) {$x$};
  \draw[->] (a.north) to[out=135,in=90] ([xshift=-0.2cm]a.west) to[out=-90,in=-135] (a.south);
\end{tikzpicture}

QQ截图20220726193530.png

\begin{tikzpicture}
  \node[inner sep=1pt] (a) at (0,0) {$x$};
  \node[inner sep=1pt] (b) at (2,2) {$y$};
  \draw[-latex] (a.0) -- (b.-90);
  \draw[-latex] (a.90) to[out = 90,in=180]  (b.180);
\end{tikzpicture}

QQ截图20220726215319.png

发布
问题