0%

LaTeX 学习笔记

目录


Part I 组织文本 [1]

一、文字处理

1.1 文字间隔

  • % 注释放在末尾可以消除掉因换行产生的多余空格
  • \, 可以产生很小的间隔:多用于防止符号连接
  • 对于防止连字方面,可以使用 \/ 或者 {} 进行分隔
  • ~ 不可断空格
  • 使用 xeCJK 宏包时,要忽略汉字与其他西文字符之间的自动空格可用盒子 \mbox{},例如:
1
\mbox{真棒}-b
  • 连字符: - ; 范围: -- ; 破折号: --- .
  • 在控制连字方面,宏包 fontspec 中的 [Ligature] 字体选项能选择连字的程度(XeTeX引擎 OpenType字体情况下)
  • 文字隐形命令 \phantom{}

1.2 字体设置

  • 查看系统字体命令[cmd]: fc-list ,例如查看TeX\TeX预装字体以及系统已装的矢量字体
1
fc-list -f "%{family}\n" :outline > fontlist.txt
  • 设置字体:借助宏包 fontspec 可选参数[no-math]
1
2
3
4
5
\setmainfont[<可选参数>]{<字体名>} %正文罗马字体族
\setsansfont[<可选参数>]{<字体名>} %无衬线字体族
\setmonofont[<可选参数>]{<字体名>} %打印机字体族

\newfontfamily<命令>[]{} %设置新的字体族命令

  在CTeX套件中对应设置项为:

1
2
3
4
5
\setCJKmainfont[<可选参数>]{<字体名>} %正文罗马字体族
\setCJKsansfont[<可选参数>]{<字体名>} %无衬线字体族
\setCJKmonofont[<可选参数>]{<字体名>} %打印机字体族

\setCJKfamilyfont{<中文字体族名称>}[]{<字体名>}

  举了例子

1
\setCJKmainfont[BoldFont=SimHei,ItalicFont=KaiTi,BoldItalicFont=LiShu]{SimSun}
  • 重新定义默认字体族
    1
    2
    3
    \renewcommand\rmdefault{} %修改\rmfamily
    \renewcommand\sfdefault{} %修改\sffamily
    \renewcommand\ttdefault{} %修改\ttfamily

  在CTeX套件中对应设置项为:

1
2
3
4
\renewcommand\CJKrmdefault{} %修改\CJKrmfamily
\renewcommand\CJKsfdefault{} %修改\CJKsffamily
\renewcommand\CJKttdefault{} %修改\CJKttfamily
\renewcommand\CJKfamilydefault{}

1.3 下划线和正文字号

  • 下划线推荐使用:

    西文 - ulem 宏包的 \uline \uuline \uwave 等;

    中文 - CJKfntef 宏包中的 \CJKunderdot \CJKunderline \CJKunderdblline \CJKunderwave \CJKsout等;

  • 字号选择:

    \documentclass[<参数>]{<文档类型>} 参数部分可设置全文默认正文字体字号;

    在CTeX套件中提供了 c5size - 默认设置,五号字体; cs4size - 小四号字体。

二、段落设置

2.1 普通段落排版

  • 行距设置:

    自定义行距: \linespread{<因子>} %默认因子为1.3

    此外宏包 setspace 能够保证数学公式等的行距也相对合理,命令 \setstretch{<因子>}

  • 单段落悬挂缩进

    1
    2
    \hangafter = ±n % 作用于段落行数;正值:n行之后;负值前n行;
    \hangindent = ±npc %缩进距离;正值在左侧;负值在右侧;
  • 首字下沉

    推荐使用宏包 lettrine\lettrine{}{} 命令

  • 特殊形状段落

    宏包 shapepar 中的 \parshape;例如:

    1
    2
    3
    \heartpar{%
    内容
    }

2.2 计数器

宏包 calc 提供了有关长度和计数器计算的简单功能

计数器设计:

1
2
3
4
\newcounter{<计数器名称>}[<可选参数:依赖的计数器名称>]
\setcounter{<计数器名称>}{<值>} %设置起始值或指定值
\stepcounter{<计数器名称>} %计数器自加1
\addtocounter{<计数器名称>}{<值>} %给计数器加上指定值

2.3 环境类排版

  • 定理类环境(默认有)

    1. 通过 theorem 宏包设置: \theoremstyle{<参数>}

      其中参数有:

      plain 默认

      break 定理头换行

      marginbreank 编号在页边,定理头换行

      changebreak 定理头编号在前文字在后,换行

      change 定理头编号在前文字在后,不换行

      margin 编号在页边,定理头不换行

    2. 通过 ntheorem 宏包设置: \theoremstyle{<参数>};参数同上,又新增了些
      其中新增参数有:

      nonumberplain 无编号

      nonumber 无编号,定理头换行

      empty 空的

      此外,还添加了 [thmmarks] 选项,可使用 \theoremsymbol 设置末尾添加结尾符号。

  • 抄录

    1. 简单抄录命令: \verb<符号><抄录内容><符号> %带*命令可使抄录内容空格可见

    2. 简单抄录环境: verbatim % 带*号环境作用同上;

      注:以上为特殊命令,不可作为其他命令参数

      宏包 fancyvrb 提供了 verbatim 环境扩展。

    3. 代码抄录环境: listings 宏包的 lstlisting 环境

      lstlisting 环境全局设置;以下仅列部分

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      \lstset{
      basicstyle = <>, % 整体格式,例如:\sffamily
      keywordstyle = <>, % 关键字格式,例如:\bfseries
      identifierstyle = <>, % 标识符格式
      stringstyle = <>, % 字符串格式,例如:\ttfamily
      commentstyle = <>, % 注释格式,例如:\rmfamily\itshape
      column = flexible, % 设置列对齐为非等宽,默认为fixd
      % flexible columns, % 作用同上
      numbers = left, % 行编号在左边,默认为 none,可选 right
      numberstyle = <>, % 行号格式
      escapechar = ` % 转义字符设置,xeCJK v3.2.2 以后无需设置
      }

      命令:类 \verb 的命令为 \lstinline<符号><代码><符号>

  • 制表位排版

    tabbing 环境,行用 \\ 分隔, \= 设置制表位

    \' 使其前后文字以当前制表位为中心对齐

    \` 后面文字右对齐

    \<\> 相反,向前跳一个制表位

    \+ 后面行向后跳一个制表位

    \- 与上相反

    \pushtabs 保存当前制表位

    poptabs 恢复上边保存的制表位

    可借助算法宏包 clrcodealgorithm2e(广泛) 、algorithmicx 排版算法

2.4 边/脚注与垂直间距

  • 脚注与边注

    1. 脚注编号由 \thefootnote 控制,可重定义

      例如带圈编号:\renewcommand\thefootnote{\textcircled{\arabic{footnote}}}

      pifont 宏包提供的更好,`

      \renewcommand\thefootnote{\ding{\numexpr171+\value{footnote}}}`

      标题使用脚注需要保护,防止写入目录:\section[节标题]{节标题\protect\footnote{脚注内容}}

    2. 边注 \marginpar{}\marginpar[左侧内容]{右侧内容}(双面模式)

      宏包 marginnote\marginnote 命令可以禁止不需要的浮动。

      \reversemarginpar 改变边注的左右位置

      \normalmarginpar 复原编著的左右位置

      \marginparwidth 边注宽度,可通过 \setlength 或者宏包 geometry 设置

      \marginparsep 边注与正文距离,可通过 \setlength 或者宏包 geometry 设置

      \marginparpush 边注见最小距离,可通过 \setlength 设置

      注: endnotes 宏包提供了尾注功能

  • 垂直间距

    1. \vfill = \vspace{\fill} \hfill = \hspace{\fill}

    2. \raggedbottom 页面内容保持自然高度,底部空白填满

      \flushbottom 页面内容在高度上均匀填满

    3. \pagebreak[<0~4>] 断页位置,0 允许,4 必须断页(默认值);相反的 \nopagebreak

    4. 若剩孤行未排序,可用 \enlargethispage{长度} ,提高版心内容,带*号的命令还会适当缩小行距。

    5. \clearpage\newpage 类似,还会清理浮动体
      \cleardoublepage 双面文档模式,奇数页会多分一页

三、标题结构

层次 名称 命令 说明
-1 part(部分) \part 可选的最高层
0 chapter(章) \chapter report,book最高层
1 section(节) \section article最高层
2 subsection(小节) \subsection -
3 subsubsection(小小节) \subsubsection reprot,book默认不编号不放目录
4 paragraph(段) \paragraph 默认不编号,不编目录
5 subparagraph(小段) \subparagraph 默认不编号,不编目录

标题文档格式可通过 titlesec 宏包等修改

ctex文档类旧版本可通过 \CTEXsetup[<选项>=<值>,……]{<对象>} 去修改;

新版本可通过 \ctexset{对象={<选项>=<值>,}, 对象/<选项>=<值>,……} 去修改。
修改方法,可参考相关文档说明(texdoc ctex

四、页面格式

4.1 文档类选项

  1. LaTeX\LaTeX2ε2\varepsilon 标准文档类的选项

    类型 选项 说明
    纸张大小 a4paper 21.0cm×29.7cm21.0\,cm\times 29.7\,cm
    \, a5paper 14.8cm×21.0cm14.8\,cm\times 21.0\,cm
    \, b5paper 17.6cm×25.0cm17.6\,cm\times 25.0\,cm
    \, letterpaper 8.5in×11in8.5\,in\times 11\,in (默认值)
    \, leagalpaper 8.5in×14in8.5\,in\times14\,in
    \, executivepaper 7.25in×10.5in7.25\,in\times 10.5\,in
    纸张方向 landscape 横向,即长宽交换(默认无)
    单双面 oneside 单面(article、report 默认值)
    \, twoside 双面,奇偶页不同,对称(book 默认值)
    字号大小 10pt 正文字号 10pt ,\large等命令与之相衬(默认值)
    \, 11pt 正文字号 11pt
    \, 12pt 正文字号 12pt
    分栏 onecolumn 单栏(默认值)
    \, twocolumn 双栏
    标题格式 titlepage 标题独自成页(report、book 默认值)
    \, notitlepage 标题不独自成页(article 默认值)
    章格式 openright 每章只从奇数页开始(book 默认值)
    \, openany 每章可从任一页开始(article、report 默认值)
    公式编号 leqno 公式编号在左边(默认无,即在右边)
    公式位置 fleqn 公式左对齐,固定缩进(默认无,即居中)
    草稿设置 draft 草稿,会把行溢出的盒子着重显示为黑块儿
    \, final 终稿(默认值)
    参考文献 openbib 每条文献分多段输出(默认无)
  2. ctex 宏包以及文档类的选项

    类型 选项 说明
    字号大小 c5size 正文五号字(仅用于文档类,默认值)
    \, cs4size 正文四号字(仅用于文档)
    章节标题 sub3section 使 \paragraph 标题独占一行(仅用于ctexcap及文档类,默认无)
    \, sub4section 使 \paragraph 和 \subparagraph 标题都独占一行(仅用于ctexcap及文档类,默认无)
    中文编码 GBK 使用GBK编码,但对XeTeX无效
    \, UTF8 使用UTF8编码
    XeTeX中文字库 nofonts 不设定中文字体,需要自己在文中定义
    \, winfonts 设定Windows系统预装字体(默认)
    \, adobefonts 设定Adobe中文字体
    排版风格 cap 使用中文标题、编号、日期等(默认)
    \, nocap 保留英文标题、编号、日期等
    \, punct 启用标点压缩(默认值)
    \, nopunct 关闭标点压缩
    \, indent 标题后首行缩进(默认值)
    \, noindent 标题后首行不缩进
    宏包兼容 fancyhdr 调用 fancyhdr 并与之兼容(默认无)
    \, hyperref 调用 hyperref 并自动设置防止标签乱码选项(默认无)
    \, fntef 调用 CJKfntef 并定义等价的 \CTEX 开头命令(默认无)

4.2 页面尺寸

使用宏包 geometry ,例如:

1
2
\usepackage{geometry}
\geometry{a4paper,left=3cm,right=3cm,centering}

4.3 页眉页脚

  • LaTeX\LaTeX 内部页面风格设置

    \pagestyle{}选项

    empty 无页眉页脚

    plain 无页眉,页脚居中页码

    headings 无页脚,页眉为章节名称、页码

    myheadings 无页脚,页眉为页码和自定义内容

    其中, myheadings 可有以下设置

    单面文档(oneside):\markright{页眉文字}

    双面文档(twoside):\markboth{左面页眉}{右面页眉} %左对偶数页,右对奇数页

  • fancyhdr 宏包提供了fancy风格;\pagestyle{fancy}

    \lhead{} 页眉左

    \chead{} 页眉中

    \rhead{} 页眉右

    \lfoot{} 页脚左

    \cfoot{} 页脚中

    \rfoot{} 页脚右

    \fancyhead[<位置>]{} 页眉;位置为E、O与L、R、C的组合

    \fancyfoot[<位置>]{} 页脚;同上

    \fancyhf[<部位位置>]{} 页眉页脚;部位位置为H、F与E、O与L、R、C的组合

    注:E为偶数页;O为奇数页。多参数时,使用半角字符逗号分隔

  • 在设置页眉页脚时可使用节标题 \rightmark 与章标题 \leftmark (article无)

  • 页眉页脚线可有如下设置:

    1
    2
    \renewcommand\headrulewidth{0.6pt} %重定义页眉线粗细,默认0.4pt; 0pt 表示无
    \renewcommand\footrulewidth{0.6pt} %默认0pt

    此外,\fancypagestyle{}可重定义原有的风格,通常设置plain

4.4 分栏控制

  • LaTeX\LaTeX默认

    • 全文双栏排版:[twocolumn]{文档类型}
    • 使用命令 \twocolumn\onecolumn 分别进入双/单栏模式(都会先换页)
      \twocolumn[可选参数] 例如:\twocolumn[\maketitle] 适用于通栏标题
    • 双栏模式下,\newpage\pagebreak 只表示分栏
      \clearpage\cleardoublepage 完成分页等。
    • 栏间距由 \columnsep 控制,可通过 \setlength 修改
      栏宽 \columnwidth 可应用于它出,不要修改
    • 栏与栏之间的长线由 \columnseprule 控制;默认 0pt,即没有
    • 双栏内容默认不均衡,可使用 balance 宏包的 \balance 命令(导言)控制平衡
  • multicol 宏包可不分页,默认平衡

    multicols 环境内不能使用浮动体与边注!!!

    例如:\begin{multicols}{3} 分三栏

    其内部不再使用 \newpage 分栏 而是用 \columnbreak.

Part II 自动化排版

一、关于目录

1.1 内容定制

1. 修改目录深度
`\setcounter{secnumdepth}{4} % 增加编号深度`<br>
`\setcounter{tocdepth}{4} 	% 增加目录深度`
  1. 正文中手工加一条目录

    \addcontentsline{<文件>}{<类型>}{<标题文字>}

    文件:目录文件扩展名 类型:章节或图标命令名 标题文字:目录项标题
    oc --> 章节目录 chapter -
    of --> 图目录 section -
    ot --> 表目录 figure -

    注:可用此法将标题与目录本身也添加至目录

  2. tocbibind 宏包默认章节目录、图表目录、文献、索引等都加入章节目录;设置参数如下:

    参数 说明 参数 说明
    otbib 不加入参考文献 chapter 使用 \chapter 样式(仅对book、article类)
    otindex 不加入索引 section 使用 \section 样式
    ottoc 不加入章节目录 numbib 对参考文献按章节编号(默认无)
    otlot 不加入表目录 numindex 对索引按章节编号(默认无)
    otlof 不加入图目录 - -
    one 以上项目(左)都不加入 - -
  3. \addtocontents{<文件>}{<内容>} 可将任何内容加在目录中

    例如:

1
2
3
………… % Other contents
\addtocontents{toc}{\protext\newpage} %目录在此处换页
\part{...}

1.2 格式定制

关于目录格式的自定义,宏包 toclofttitletoc 都可以解决;后者比较麻烦,以后慢慢研究

参考文献

[1][1] 刘海洋. LaTeX\LaTeX 入门[M]. 北京: 电子工业出版社:2013, 6.

您的支持将鼓励我继续创作!