📄 ctex-faq.tex.bak
字号:
\begin{code}
\renewcommand{\theequation}{\thesection.\arabic{equation}}
\end{code}
这么做有一个小问题,每当新的章节开始的时候,公式编号不会重新从~1~开始。
你不得不使用~\cmd{setcounter}~在新的章节开始的时候把公式编号的计数器清零。
\pkg{amsmath}~宏包提供了一个~\cmd{numberwithin}~命令来自动完成这些工作。
\begin{code}
\numberwithin{equation}{section}
\end{code}
使得公式编号和章节编号联系在一起,而且章节编号改变时公式编号自动清零。
\cmd{numberwithin}~命令不光可以用于修改公式编号的格式,也可以用于将任意的
两个计数器联系在一起。
\Question[Q-math-subeqn]{如何实现如~(1a) (1b)~这种公式编号?}{0.1}{0.3}
使用~\pkg{amsmath}~宏包中的~\env{subequations}~环境。例如:
\begin{example}
\begin{subequations}
\begin{equation}
A = B
\end{equation}
\begin{equation}
C = D
\end{equation}
\end{subequations}
\end{example}
所有在同一个~\env{subequations}~环境中的公式共享一个主编号(例子中的~\theequation~)。
如果想用数字代替字母作为公式的子编号,或者修改编号的格式,可以在~\env{subequations}~
环境内部重新定义命令~\cmd{theequation}~,例如
\begin{example}
\begin{subequations}
\renewcommand{\theequation}
{\theparentequation-\arabic{equation}}
\begin{equation}
A = B
\end{equation}
\begin{equation}
C = D
\end{equation}
\end{subequations}
\end{example}
公式的主编号使用计数器~parentequation~,子编号使用计数器~equation~。
如果这种公式很多,在每一个~\env{subequations}~中都加上这么一句命令不是一个好的方法。
你可以重新定义一个新的环境:
\begin{code}
\newenvironment{mysubequations}
{\begin{subequations}\renewcommand{\theequation}{\theparentequation-\arabic{equation}}}
{\end{subequations}}
\end{code}
然后使用自定义的环境代替~\env{subequations}~就可以了。
\Question[Q-math-eqnumprime]{如何让一个公式编号表示为另一个公式编号的变化形式?}{0.3}{0.3}
我们经常使用一个公式编号加上某些符号如~$'$~来表示公式的一个变化。
这样的公式编号可以通过~\pkg{amsmath}~宏包的~\cmd{tag}~命令加上
~\LaTeX{}~的引用机制来实现。例如
\let\refsave\ref
\def\ref#1{\refsave*{#1}}
\begin{example}
\begin{equation} \label{eq:original}
A = B
\end{equation}
...
\begin{equation}
\tag{\ref{eq:original}$'$} \label{eq:origprime}
A = B + 1
\end{equation}
...~公式~\ref{eq:origprime}~是由
公式~\ref{eq:original}~变化而来~...
\end{example}
\let\ref\refsave
\let\refsave\relax
类似的,你也可以实现其他形式的编号变化。
\subsection{字体}
\Question[Q-math-mathbb]{实数域~$\mathbb{R}$~或复数域~$\mathbb{C}$~等的字体该用什么命令?}{0.1}{0.3}
使用~\pkg{amsfonts}~宏包提供的
\begin{latexcmd}
\cmd{mathbb}\marg*{字母}
\end{latexcmd}
命令,例如:
\begin{example}
$x \in \mathbb{R}$ and $c \in \mathbb{C}$
\end{example}
\Question[Q-math-bm]{书中向量常用斜体加黑体表示,该用什么字体命令排版?}{0.1}{0.3}
使用~\pkg{bm}~宏包提供的
\begin{latexcmd}
\cmd{bm}
\end{latexcmd}
命令,例如:
\begin{example}
${\bm x}^T {\bm y}$
\end{example}
\subsection{其它}
\Question[Q-math-limits]{如何使上下限出现在求和、积分符号的上下方而不是右边?}{0.3}{0.3}
数学公式中求和、积分符号的上下限的位置取决于是行间公式还是独立公式。
在行间公式中,类似的上下限出现在符号的右边,而在独立公式中出现在符号的上下方。
这一规则可以通过命令
\begin{latexcmd}
\cmd{limits}
\end{latexcmd}
和
\begin{latexcmd}
\cmd{nolimits}
\end{latexcmd}
来改变。行间公式缺省使用~\cmd{nolimits}~而独立公式缺省使用~\cmd{limits}。
如果要改变缺省规则,就在符号后面,上下限之前加入上面的两个命令之一。
例如缺省情况是
\begin{example}
$$\sum_{i=1}^{n} i^2 = 0$$
If $\sum_{i=1}^{n} i^2 = 0$ then ...
\end{example}
我们可以修改为
\begin{example}
$$\sum\nolimits_{i=1}^{n} i^2 = 0$$
If $\sum\limits_{i=1}^{n} i^2 = 0$ then ...
\end{example}
\Question[Q-math-extsymb]{如何实现上下方能输入公式文字且可伸长的等号或者箭头符号?}{0.3}{0.3}
宏包~\pkg{amsmath}~提供了两个可以伸长的单箭头符号
\begin{latexcmd}
\cmd{xleftarrow}\oarg*{下方公式}\marg*{上方公式}
\end{latexcmd}
和
\begin{latexcmd}
\cmd{xrightarrow}\oarg*{下方公式}\marg*{上方公式}
\end{latexcmd}
示例如下:
\begin{example}
$ A \xleftarrow{n=0} B \xrightarrow[T]{n>0} C $
\end{example}
\begin{advanced}
\makeatletter
\def\ExtendSymbol#1#2#3#4#5{\ext@arrow 0099{\arrowfill@#1#2#3}{#4}{#5}}
\def\RightExtendSymbol#1#2#3#4#5{\ext@arrow 0359{\arrowfill@#1#2#3}{#4}{#5}}
\def\LeftExtendSymbol#1#2#3#4#5{\ext@arrow 6095{\arrowfill@#1#2#3}{#4}{#5}}
\makeatother
\newcommand\myRightarrow[2][]{\RightExtendSymbol{|}{=}{\Rightarrow}{#1}{#2}}
\newcommand\myArrow[2][]{\ExtendSymbol{\Leftarrow}{=}{\Rightarrow}{#1}{#2}}
\danger
至于其他样式的符号,我们可以利用~\pkg{amsmath}~提供的一些内部命令定义几个通用的
~ExtendSymbol~命令来实现:\enddanger
\begin{code}
...
\usepackage{amsmath}
...
\makeatletter
\def\ExtendSymbol#1#2#3#4#5{\ext@arrow 0099{\arrowfill@#1#2#3}{#4}{#5}}
\def\RightExtendSymbol#1#2#3#4#5{\ext@arrow 0359{\arrowfill@#1#2#3}{#4}{#5}}
\def\LeftExtendSymbol#1#2#3#4#5{\ext@arrow 6095{\arrowfill@#1#2#3}{#4}{#5}}
\makeatother
\end{code}
三个命令的差别只在于符号上下的字符位置处理上。简单解释一下五个参数的意义:
前面三个参数用来组合生成最后的符号,第一个参数代表左端的符号,
第二个参数的代表中间重复的符号,第三个参数代表右端的符号。
最后两个参数分别是符号下的字符串和符号上的字符串。
现在我们就可以利用~ExtendSymbol~来定义我们想要的符号了。
例如,定义一个长的双箭头
\begin{code}
\newcommand\myRightarrow[2][]{\RightExtendSymbol{|}{=}{\Rightarrow}{#1}{#2}}
\end{code}
又如定义一个长的双向箭头
\begin{code}
\newcommand\myArrow[2][]{\ExtendSymbol{\Leftarrow}{=}{\Rightarrow}{#1}{#2}}
\end{code}
使用的时候可以用宽度为~0~的~rule~支撑指定符号的最小长度
也可以根据符号上下的字符长度来确定符号长度
\begin{example}
$$ A \myRightarrow[\rule{3cm}{0cm}]{A=B} B $$
$$ A \myArrow[A=B^2]{B=A^2} B $$
$$ A \myArrow{B^2=A^2} B $$
\end{example}
大家可以举一反三。
\end{advanced}
\section{图形表格}
\subsection{图形}
\Question[Q-graphics-how]{\LaTeX{}~如何使用图形?}{0.2}{0.2}
由于~DVI~文件经常被转为~\PS~文件,所以~\LaTeX{}~支持最好的是
~EPS~格式(~Encapsulated PostScript~,是~\PS~语言的子集)
的图形。目前的~\LaTeXe{}~包含两个功能相同的图形宏包:~graphics~和
~graphicx~宏包。两者的差异是~graphics~宏包使用标准的~\LaTeX{}~参数
语法规则,而~graphicx~版本则使用更为简便灵活的命名机制。
一个使用图形的简单例子是:
\begin{code}
\documentclass{article}
\usepakcage{graphicx}
\begin{document}
\includegraphics{file.eps}
\end{document}
\end{code}
因为~\cmd{includegraphics}~不会结束当前段落,所以它能够在文本行中放置图形。
如果需要放置独立的图形,则需要用到~figure~浮动环境。例如:
\begin{code}
\documentclass{article}
\usepakcage{graphicx}
\begin{document}
\begin{figure}
\includegraphics{file.eps}
\caption{This is caption of figure}
\end{figure}
\end{document}
\end{code}
在~figure~环境中可以使用~\cmd{caption}~命令来制定图形的标题,这个标题将会出现在图形
的上方或者下方,还会通过使用~\cmd{listoffigures}~命令出现在一个图形目录中。
我们建议~\LaTeX{}~用户详细阅读《~\LaTeX{}~图形指南》\cite{lgraphics-cn}~一书,
可以使得你对在~\LaTeX{}~中使用图形有一个全面的了解,避免走弯路。
\Question[Q-graphics-type]{\LaTeX{}~支持哪些图形格式?}{0.2}{0.3}
目前~\LaTeX{}~只有~EPS~格式的图形在所有的~TeX~系统中都能得到全面的支持。
而其他的图形,如~JPEG~可以在某些系统中使用,这取决于所用的~DVI~转换程序。
因为一般最终要得到的都是~\PS~或者~PDF~格式的文件,因此先将图形转换为
~EPS~格式仍然是最有效、最方便的图形处理方法。
\begin{advanced}
\ddanger
虽然如此,我们在这里还是给出一个直接使用~JPEG~图形和~PNG~图形的方法。
假设我们有~ctex-j.jpg~和~ctex-p.png~图形,以及两个格式为\enddanger
\begin{prompt}
%%BoundingBox: 0 0 width height
\end{prompt}
的~ctex-j.bb~和~ctex-p.bb~文件,其中的~width~为对应图形的宽度,
~height~为高度。这个文件也可以用~\faqindex{ebb}~程序生成。
~\faqindex{ebb}~是~dvipdfm~带的一个工具,专门用来生成图形文件的~BoundingBox~。
~\MiKTeX{}~和~\fpTeX{}~中都已带有这个程序。然后编译下面的例子:
\begin{code}
\documentclass{article}
\usepackage{graphicx}
\DeclareGraphicsRule{.jpg}{eps}{.bb}{}
\DeclareGraphicsRule{.png}{eps}{.bb}{}
\begin{document}
\includegraphics{ctex-j.jpg}
\includegraphics{ctex-p.png}
\end{document}
\end{code}
在~\cmd{includegraphics}~命令中可以使用各种参数,和~EPS~图形一样。
编译后使用~dvipdfm~将~DVI~转换为~PDF~文件可以看到图形已被正确插入。
用最新的~\MiKTeX{}~中的~dvips~转换为~\PS~文件或者用~DVI~预览工具~yap
0.99e~也可以看到图形,不过图形的大小和颜色都不正确。
而~\fpTeX{}~的~DVI~预览工具~windvi~就完全看不见图形。
\end{advanced}
\Question[Q-graphics-dvieps]{\faqindex{DVI}~里不能显示~\faqindex{EPS}~图片?}{0.2}{0.2}
这是正常现象,因为~EPS~图形并没有真正被加到~DVI~文件中,
它是在从~DVI~到~\PS~转换时才被加到生成的~\PS~文件中的。
因此,所有用到的~EPS~文件必须和~DVI~文件在一起。
大多数旧版本的~DVI~浏览器不支持显示~EPS~图形。这时,
~DVI~浏览器一般会将~EPS~图形的~BoundingBox~用一方框显示出来,
以方便使用者对图形进行定位。目前版本的一些~\TeX{}~软件如~\MiKTeX{}~、
~\fpTeX{}~和~\teTeX{}~等所带的~DVI~浏览器~(Yap, Windvi, Xdvi)~
可以借助于~Ghostscript~来显示~EPS~图形。即使是这样,
它们对~EPS~的支持仍然是有限的,不支持~psfrag~之类的~\PS~特殊处理效果,
而且经常会出现不正常的显示。此时并不是你的~DVI~文件或者~DVI~浏览器损坏了,
而是要将~DVI~文件转换成~\PS~文件或者~PDF~文件进行察看和打印,
才能得到最终的真正效果。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -