LaTeX中的文本
LaTeX中的文本
正文输入
语言问题
一般的情况下LaTeX只支持英语,其他的语言都需要相应的包来支持,比如中文需要CTeX宏包。由于我们目前处在中文环境之下所以不需要考虑一些小语种的问题。
在第一篇LaTeX文档当中我们已经采用了ctex宏包:
\usepackage{ctex}
在Overleaf里面可以直接采用这种方式,但是在TeXLive当中可能还是会出现中文不出现的情况,这个时候需要将编码改为UTF-8编码(如果本来不是的话)。
字母
有的时候我们可能需要在字母上输出重音(比如汉语的四声)。我们可以采用重音命令。
还可能有一些特殊字符:
一些字体如Computer Modern等会在ff,fi等等情况下出现连字(连笔),如果不想要的话可以采用空的分组或者\/命令。
stuf{}f stuf\/f
标点
以下的标点可以直接使用:
, . ; : ! ? ‘ ’ ( ) [ ] - / * @
分隔句子的标点之后注意加上空格以保持美观的距离。
注意引号的特殊性,双引号实际上是两个单引号:
‘‘ ’’
如果遇到单引号和双引号连续出现:
‘‘\,‘
其中的\,
产生很小的空格间距。
-号也有重复使用的用途:
% 一个是连字符,两个字符表示数字范围,三个即破折号 passer-by 1--2 dash---like this
~也可以用来表示数字范围,但是直接打上去不能识别,需要在数学模式下用:$\sim$
。
省略号使用命令更佳:
% 在底部的省略号 \ldots
以下标点符号不能直接使用,使用的时候需要使用\转义。
# $ % & { } _ \
其中的\需要使用\textbackslash
来输出。
空格和换行
空格起到分隔作用,注意LaTeX当中空格的几个特性:
- 任意多个和单个功能相同。
- 每行最前面的空格将被忽略。
- 单个换行也视为一个空格(这说明输出换行的文本需要两次换行,在代码里面留出一个空行)。
下面的空格从窄到宽:
\! \, \; \ \quad \qquad
当然如果你不想记住这么多,可以试试幻影空格,它将产生与参数内容一样大小的空格:
\phantom{你好}
上面的代码将产生长度与你好相等的空格。
有的时候我们不想在一些比较重要的地方断行,我们可以使用~来防止分行:
Mr.~Knuth
这样Mr和Knuth之间就不会断行。
为了保持英文排版的美观,请务必在逗号,句号,分号后边加空格!
空行,即两个换行可以用来分段,而且固定产生缩进。我们也可以用\par
命令来产生分段,但是这个命令连续使用也只产生一次分段。
如何强制另起一行并且不缩进?我们可以直接\\
来分行,这样在后面的内容就直接另起一行,\linebreak
也有同样的效果,但是前一行会散开对齐。
特殊符号
其实输入特殊符号最快的方式是:如果这个符号可以用UTF-8编码下直接输入,那么直接输入就好。
或者直接输入unicode码表。
\symbol{28450}
字体
直接输入命令即可输出对应的字体。
\upshape{text}
如此即可。
中文字体也需要输入相对应的命令:
{\CJKfamily{hei}黑体文本} {\CJKfamily{kai}楷体文本} {\songti 宋体} {\fangsong 仿宋}
注意开始时需要导入ctex宏包。
中文的斜体和粗体实际上对应的字体就是楷体和黑体。
字体这个问题细究下去就会是一个深坑,如果有特殊需求建议自行翻阅手册。
强调文字
强调文字中最常用的命令就是\emph
,它可以将直立体改为意大利体,把意大利体改为直立体。如下代码可以实现:
\emph{text} {\em text \/} % 注意\/有倾斜校正的作用
更强烈的强调也就是粗体,可以直接使用\textbf
。
下面是下划线的实现方式:
% 直接给对应文本加上下划线 \underline{text} % 但是上面的代码使得划线文本不能换行,并且下划线与文本距离不整齐 % 下面的命令解决了这个问题 % 使用前需要导入ulem宏包 \uline{text} % 默认的emph在导入ulem之后也会变成下划线,需要注意。
除了下划线我们还有其他修饰文字的方式:(以下均需要先导入ulem宏包)
\uuline{text} % 双下划线 \uwave{text} % 波浪线 \sout{text} % 删除线(中部) \xout{text} % 删除线(斜线) \dashuline{text} % 虚下划线 \dotuline{text} % 点下划线 % 下面是针对中文的。 % 使用前先导入CJKfntef宏包 \CJKunderdot{汉字下加点} \CJKunderline{汉字下划线} \CJKunderblline{汉字双下划线} \CJKunderwave{汉字波浪线} \CJKsout{汉字中部删除线} \CJKxout{汉字斜删除线} % CJKfntef也会改emph为下划线 % CJKfntef还提供了指定宽度让汉字分散对齐的环境 \begin{CJKfilltwosides}{5cm} 分散对齐 \end{CJKfilltwosides}
如果不想要emph命令变成下划线,可以使用\normalem
命令改回来。
字号和间距
调整文字大小可以使用比较简单的声明式命令来解决:
\tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge \Huge % 示例: {\large text}
中文字体命令和相对应的大小如下表。
latex文档里面行距的计算方式如上图,我们可以使用命令\linespread{因子}
的方式来调整实际行距。
对article文档类,行距默认为1,也就是字号大小的1.2倍,而ctexart等中文文档就是1.3,默认是字号的1.56倍。
水平间距与盒子
水平间距
首先考虑长度单位的问题,TEX里面可以使用以下的长度单位:
pt % 磅,或者说是point点 pc % 1 pica = 12 pt 相当于四号 in % inch 英寸 bp % 大点, 1 in = 72 bp cm % 厘米 mm % 毫米 dd % didot point 1157 dd = 1238 pt cc % cicero 1 cc = 12 dd sp % scaled point 65536 sp = 1pt 最小长度 em % 等于一个\quad ex % 小写字母x高度
\quad
之前的空格水平间距都是不可换行的,而它与比他更大的空格通常是可以换行的。
如果本来的空格命令没有合适的,可以直接指定距离产生间距:
\hspace{1cm} % 可断行 % 下面的代码告诉我们LaTeX会在只有一边有内容的地方忽略hspace的距离。 text\\ \hspace{1cm}text\\ \hspace*{1cm}text % 加星号防止忽略
盒子
box盒子就是TEX当中的基本处理单位,下面是一些有关盒子的代码。
% 下面的text内容将会以左右模式排列,并且不允许断行。 \mbox{text} % makebox 与mbox类似,但是有可选参数 \makebox[1cm][s]{text} % 第一个可选参数是宽度 % 第二个可选参数是对齐方式,c中,l左,r右,s分散,默认居中。 % 如果宽度设置为0,可以产生重叠的效果。 % 下面是产生带边框的盒子,但是与上面相似 \fbox{text} \framebox[1cm][s]{text} % 长度变量fboxsep确定边框和内容的距离 \setlength{\fboxsep}{0pt}
段落
缩进
西文文档类article等不会在每个章节的第一段缩进,但是中文文档类ctexart等会缩进两个汉字宽。
下面的代码可以调整缩进:
% 临时禁用缩进 \noindent 段落 % 产生一个长为\parindent的缩进 \indent % 引入indentfirst宏包可以在西文文档产生章节首段的缩进
段间距
段落间距由\parskip
控制,默认是橡皮长度0pt plus 1pt。
% 定义为固定长度 \setlength{\parskip}{0pt}
段落对齐方式
% 强制段落左,右对齐 \raggedright \rightleft % 居中 \centering % 居中环境 \begin{center} 居中 \end{center}
段落形状
这里可以采用一些宏包来实现一些比较复杂的效果,例如首字下沉:
\usepackage{lettrine} \lettrine{T}{he} % T字首字下沉
还有shapepar宏包可以排出特定的形状,具体可以参看相应的手册。
文本环境
引用环境如下:
\begin{quote} 引用文本,左右边距会比正文大,且没有首行缩进。 \end{quote} \begin{quotation} 多段引用,每段首行缩进。 \end{quotation}
verse环境可以用来排版诗歌韵文:
\begin{verse} \end{verse} % 利用\\换行,分段仍然用空行。
摘要环境:
\begin{abstract} 摘要 \end{abstract} % 会增加摘要标题,如果不喜欢可以重定义 \CTEXoptions[abstractname={摘\quad 要}]
列表环境:
\begin{enumerate} \item 第一项 \item 第二项 \end{enumerate} % enumerate环境自动编号 % itemize不编号 \begin{itemize} \item 第一项 \item 第二项 \end{itemize}
列表环境自动编号是依赖不同的计数器的,四个不同嵌套层次的enumerate环境会有不同的计数器:enumi,enumii,enumiii,enumiv.
如果想输出计数器的值:\the
+计数器名称。将计数器名称作为参数输入不同命令可以实现不同的形式:
命令 | 形式 |
---|---|
\arabic |
阿拉伯数字 |
\roman |
小写罗马 |
\Roman |
大写罗马 |
\alph |
小写字母 |
\Alph |
大写字母 |
\fnsymbol |
特殊符号 |
重定义 \theenumi
等命令可以让你在输入\item
的时候有不同的效果。
页码,章节等也有计数器,比如页码计数器为page
。
我们也可以自己定义计数器(在导言区):
% 默认值 \newcounter{mycount}{0} % 默认阿拉伯数字 \renewcommand\themycount{\arabic{mycount}} % 使用 \stepcounter{mycount} % 自增 \addtocounter{mycount}{1} % 指定加法
定理类环境可以输出重要定理,以下为相应代码:
% 一般在导言区先声明新的定理环境 \newtheorem{thm}{定理} % 上面的定义就是标题为定理的定理类环境 % 注意它是会自动编号的 \begin{thm}[小标题] \end{thm} % 如果要让定理按章节编号再加小编号,可以加可选参数: \newtheorem{thm}{定理}[chapter]
抄录命令和环境可以让我们不需要转义就可以输入大量的特殊符号:
\verb" $$$$$$$$\\\\\\\\ " \begin{verbatim} 原 样 输 出,包括空格数量 \end{verbatim}
在\verb
后面的起始和末尾的符号相同,两个符号中的内容将原样输出。
代码环境需要verbatim环境,如果还想代码高亮,就可以导入listings宏包。
\begin{lstlisting}[language=C] #include<stdio.h> \end{lstlisting}
我们通过一些处理可以输出一些特殊效果的代码。
\lstset{language=C,flexiblecolumns,escapechar='} \begin{lstlisting} double x = 1/sin(x); // '$frac{1}{\sin x}$' \end{lstlisting}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗