LaTeX中的文本 正文输入 语言问题(转贴)

原文:https://www.cnblogs.com/han-son-xiong/p/17817022.html

一般的情况下LaTeX只支持英语,其他的语言都需要相应的包来支持,比如中文需要CTeX宏包。由于我们目前处在中文环境之下所以不需要考虑一些小语种的问题。

在第一篇LaTeX文档当中我们已经采用了ctex宏包:

  \usepackage{ctex}

在Overleaf里面可以直接采用这种方式,但是在TeXLive当中可能还是会出现中文不出现的情况,这个时候需要将编码改为UTF-8编码(如果本来不是的话)。

字母

有的时候我们可能需要在字母上输出重音(比如汉语的四声)。我们可以采用重音命令

image

还可能有一些特殊字符:

image

一些字体如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​也有同样的效果,但是前一行会散开对齐。

特殊符号

image

其实输入特殊符号最快的方式是:如果这个符号可以用UTF-8编码下直接输入,那么直接输入就好。

或者直接输入unicode码表。

  \symbol{28450}

字体

直接输入命令即可输出对应的字体。

image

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

中文字体命令和相对应的大小如下表。

image

image

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}
posted @ 2024-01-20 10:10  叕叒双又  阅读(584)  评论(0编辑  收藏  举报