其实有点卡
其实有点卡
这家伙很懒,什么也没写!

注册于 5年前

回答
20
文章
22
关注者
4

导言区重定义 \normalsize 对全文有效:

\documentclass[12pt]{ctexart}

\makeatletter
\renewcommand \normalsize {
  \@setfontsize\normalsize{10pt}{12pt}
  \abovedisplayskip      0pt plus2pt minus1pt
  \abovedisplayshortskip 0pt plus2pt
  \belowdisplayshortskip 0pt plus2pt minus1pt
  \belowdisplayskip      0pt plus2pt minus1pt
  \let\@listi\@listI
} \normalsize
\makeatother

\begin{document}
    二阶常系数齐次线性方程的形式为:$y^{\prime \prime}+p y^{\prime}+q y=0$,其中$p, q$为常数,其特征方程为$\lambda^{2}+p \lambda+q=0$.
    
    方程的通解为:
    
    (1)特征方程有两个相异的实根$\lambda_{1}$,$\lambda_{2}$时,通解形式为
    \[
    y(x)=C_{1} \mathrm{e}^{\lambda_{1} x}+C_{2} \mathrm{e}^{\lambda_{2} x}.
    \]
    
    (2)特征方程有两个相同的实根$\lambda_{1}=\lambda_{2}$时,通解形式为
    \[
    y(x)=\left(C_{1}+C_{2} x\right) \mathrm{e}^{\lambda_{2} x}.
    \]
    
    (3)特征方程有一对共轭复根$\alpha \pm \beta \mathrm{i}$时,通解形式为
    \[
    y(x)=\mathrm{e}^{\alpha x}\left(C_{1} \cos \beta x+C_{2} \sin \beta x\right).
    \]
    
\end{document}

image.png

以下代码完美解决:

\documentclass{ctexart}
\ExplSyntaxOn
\xeCJK_pre_inter_class_toks:nnn {FullRight} {HalfRight} {\kern-0.5em}
\ExplSyntaxOff
\begin{document}
查看《手册》, 可以知道\par
查看《手册》可以知道
\end{document}

xeCJK 对不同的字符设置了不同的字符类:
image.png
可见全角右标点是 3 类,半角右标点是 5 类,可以使用 \XeTeXinterchartoks 设置这两类标点之间的空白即可。

代码和效果如下:

\documentclass{ctexart}
\XeTeXinterchartoks 3 5 = {\kern-0.5em}
% \ExplSyntaxOn
% \XeTeXinterchartoks
%   \c__xeCJK_FullRight_class_int \c__xeCJK_HalfRight_class_int {\kern-0.5em}
% \ExplSyntaxOff
\begin{document}
查看《手册》, 可以知道\par
查看《手册》可以知道
\end{document}

image.png

Plain TeX 的方法是我想要的,但它直接让我汗流浃背了。。

\documentclass{article}
\usepackage{unicode-math}
\begin{document}
$\uppi$
\end{document}

这三个图形,单个画都没有问题,但是要自动处理它们之间的关联性,恐怕 tikz 做不了。也许一种编程能力强的绘图语言可以做,比如 asymptote,但恐怕也得写上个几百上千行代码。

这样的需求不如使用其他专业的软件吧,tikz 做不了(个人见解)。

这种图可以用 tikz-3dplot 宏包,其手册封面便展示了类似的,可以试试。

image.png

这个问题之前问过,别人给了一个很好的解答。你可以看了回答后试着修改。

https://ask.latexstudio.net/ask/question/7979.html

问答站已经积累很多问题了,提问前可以先搜一搜,没事也可以看一看。

这里给一个不完善的实验性例子。

首先大可写个循环而不伤身体:

\documentclass[a5paper]{article}
\makeatletter
\def\box@sep{\hskip-.4pt\relax}
\newcommand\minitab[1]{%
  \@for\@box:=#1\do{%
    \box@sep\framebox{\@box}%
  }%
}
\makeatother
\begin{document}
I can eat glass, it \minitab{doesn't,hurt} me.
\end{document}

image.png

上述实现有两个问题:一是\minitab命令一执行就会左移-0.4pt(虽然几乎看不出来),二是盒子高度没有固定。可以在\minitab定义之前加入如

\def\@@box@sep{\let\@box@sep\box@sep}
\let\@box@sep\@@box@sep

这样的魔法来解决第一个问题,至于第二个问题大可用\vphantom去撑(固定盒子高度肯定有更好的方法)。这样我们就可以得到期待的结果了。

\documentclass[a5paper]{article}
\makeatletter
\def\box@sep{\hskip-.4pt\relax}
\def\@@box@sep{\let\@box@sep\box@sep}
\let\@box@sep\@@box@sep
\newcommand\minitab[1]{%
  \@for\@box:=#1\do{%
    \@box@sep\framebox{\vphantom{O'g}\@box}%
  }%
}
\makeatother
\begin{document}
I can eat glass, it \minitab{doesn't,hurt} me.
I can eat glass, \minitab{it,doesn't, hurt,me}.
\end{document}

image.png
它甚至还能换行。。。

当然这是一个实验性的例子,肯定有更好的方法完善代码。不过这个例子有趣的地方在于,实现了参数数目可变的命令。

我找了好久也看到了一个方法,就是在tcolorbox环境外新“套壳”一层环境,然后在tcolorbox内部设置\parindent值。

这用tikz画一个吧,虽然很笨。。

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \node at (0,0){$\begin{array}{rcl}
      d & dd & d  \\
      d & dd & dd \\
      d & dd & ddd\\
      d & dd & dd \\
      d & dd & d
    \end{array}$};
  \draw (-1,0.65) --++ (-0.2,0) --++ (0,-1.25) --++ (2.2,0);
\end{tikzpicture}
\end{document}

image.png

利用伯努利双纽线的极坐标表达式,弄了一个简单例子。

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}% 注意定义域
    \draw[->] (-3,0) -- (3,0);
    \draw[->] (0,-2) -- (0,2);
    \draw[domain=-pi/4:pi/4,samples=400] plot ({deg(\x)}:{2*sqrt(cos(2*deg(\x)))});
    \draw[domain=-pi/4:pi/4,samples=400] plot ({deg(\x)}:{-2*sqrt(cos(2*deg(\x)))});
  \end{tikzpicture}
\end{document}


\begin{tikzpicture}
  \coordinate (O) at (0,0);
  \draw[->] (-3,0) -- (3,0);
  \draw[->] (0,-2) -- (0,2);
  \draw[domain=-pi/4:pi/4,samples=400]
    plot ({1.5*sqrt(2*cos(2*deg(\x)))*cos(deg(\x))},
          {1.5*sqrt(2*cos(2*deg(\x)))*sin(deg(\x))});
  \draw[domain=-pi/4:pi/4,samples=400]
    plot ({-1.5*sqrt(2*cos(2*deg(\x)))*cos(deg(\x))},
          {-1.5*sqrt(2*cos(2*deg(\x)))*sin(deg(\x))});
\end{tikzpicture}%%% 双纽线参数方程,这个画出来有一些问题

image.png

画曲线的代码有两行,感觉不太完美,主要是为了避免给负数开方。

伯努利双纽线的极坐标方程很奇怪,感觉有某些约定。

\chapter命令一定会另起一页。如果不要另起一页,就用articlectexart文档类,用\section命令。当然,可能你还要设置一下标题格式

这是一种有益的约定,应该养成这种良好习惯。
image.png

发布
问题