TEX 学习笔记

Bash LaTeX Linux Makefile Markdown UTF-8 Vim Windows 字体 编译 快捷键

小编本科在物理学院用过不少laTex,而今全面转向Web的同时排版工具也全面转向Markdown了。将laTex的使用心得以及大小坑记录在此以备后用。

编译器

Windows

  • 安装CTEX,可很好地支持各种编译器并获得良好的中文支持。

Linux

安装 texlive。

arch: texlive-core texlive-bin texlive-langcjk texlive-latexextra
ubuntu: texlive texlive-xetex texlive-lang-cjk

Startup

安装好TEX编译器后已经使用gbsn,gkai等字体,但这些字体库不全。可以编译简单的中文:

\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gkai}
我是楷体
\end{CJK}
\begin{CJK}{UTF8}{gbsn}
我是宋体
\end{CJK}
\end{document}

使用 xelatex 编译,可以方便地编译中文。首先,在导言区添加:

\usepackage[cm-default]{fontspec}

然后在文档中添加:

\setmainfont[Mapping=tex-text]{WenQuanYi Micro Hei}
%for beamer:
\setsansfont[Mapping=tex-text]{WenQuanYi Micro Hei}

为了能够在Linux中使用 windows 字体,首先拷贝字体到用户的字体库:

cp -r $win_dir/Windows/Fonts ~/.fonts/winfonts

然后更改 xelatex 字体映射:

  1. 打开/usr/share/texlive/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
  2. 将这里指定等win字体更改为系统中存在的字体(使用 fc-list查看),如SimSun, KaiTI等

编辑器

TexMaker、TexStudio、Kile、LaTex Editor、SciTE LaTex IDE、Texlipse、LaTex Lab、JaxEdit、BaKoMa Tex Word等。以下介绍常用的几种。

WinEdt

这是CTEX默认的编辑器,功能强大;中文支持很好;有大量的CTex库 收费软件;更新困难;可配置性差;智能识别上不够方便;程序文件庞大;文档支持不好。

快捷键

  • F5 编译树结构
  • F9 编译
  • Ctrl+Enter 自动补全

显示行号

状态栏有显示;在行首显示快捷键:Ctrl+=

自动完成

  • 输入\begin{sth} } 会自动完成 \end

  • 输入\end{ { 会自动完成 \begin

  • \begin{XXX} 后输入> 自动解决begin和end不匹配

  • 输入\ref{},会显示所有标签

###更改编码方式

CTEX 默认编码为System.打开UTF8时乱码解决方案:

方案一、文件开头添加

% !Mode:: "TeX:UTF-8"

方案二、Options->Preferences->Unicode->Enable UTF-8:

Format for Modes 加Tex(改为Tex;UTF-8……)

TexMaker

以及新版的 TexMakerX(即TexStudio),跨平台,界面简洁。可以自定义编译命令,实现一键编译。自动补全较强。但是依赖于后台编译器如texLive。

快捷键

自动补全 Ctrl+Space,与输入法冲突可以更改 跳转到下一个编辑块 Ctrl+Right

Kile

  • Linux KDE
  • 界面友好
  • 文档很全

Vim、Emacs

  • 纯文本编辑工具
  • 易于与bash集成,使用Makefile编译

语法

字号

从小到大依次为

\tiny
\scriptsize
\footnotesize
\small
\normalsize
\large
\Large
\LARGE
\huge
\Huge

目录索引

去掉编号前多余的零

\renewcommand{\thesection}{\arabic{section}}

特殊字符

  • 特殊字符用\转义,例如\%

  • @字符

    latex //控制@字符的特殊含义,便于定义命令,诸如 \newcommand{\figcaption}{\def\@captype{figure}\caption} \makeatletter \makeatother

标题页

  • report中添加标题页

    latex \thispagestyle{empty} //标题页不占页码 \maketitle

  • article中添加标题页

    latex \thispagestyle{empty} //标题页不占页码 \maketitle \newpage

  • 作者

    latex \author{a \and b}

图表

  • ps文件应编译为PDF后引入tex文件,否则文件名路径不能有多个.
  • caption中换行: \protect\\
  • 表格边框

    latex \toprule //表格上边框 \bottonrule //表格下边框 \midrule //标题栏下边框 \hline //横穿一行的横线 \cline{m-n} //从第m列到第n列画横线 //竖线在tabular参数中用|来指定。 \textwidth为页面文字宽度 \linewidth为当前环境下允许的宽度 \minipage{.59\linewidth}之间要有间隔否则会自动换行

公式

  • 数学函数

    latex \sin //sin函数

  • 分段函数

    latex f(x)=\begin{cases} 1 & x<0 \\ -1 & n>1 \end{cases}

  • 定界符:\left.,\right|

布局

  • 页眉页脚

    ```latex \usepackage{fancyhdr} \pagestyle{fancy}

    \lhead{} \chead{} \rhead{\bfseries The performance of new graduates}

    \lfoot{From: K. Grant} \cfoot{To: Dean A. Smith} \rfoot{\thepage}

    \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt} ```

  • 控制页码格式

    latex \pagenumbering{num_style} % arabic - Arabic numerals % roman - Lowercase roman numerals % Roman - Uppercase roman numerals % alph - Lowercase letters % Alph - Uppercase letters

  • 空格

    空格样式 | 代码 | 宽度 —|—|— 两个quad空格 | a \qquad b | 两个m的宽度 quad空格 | ` a \quad b | 一个m的宽度 大空格 | a\ b | 1/3m宽度 中等空格 | a\;b | 2/7m宽度 小空格 | a\,b | 1/6m宽度 没有空格 | ab | 0 紧贴 | a!b | 缩进1/6m宽度 缩进 | \indent` | a缩进Tab

交叉引用

定义:\label{sth} 引用:\ref{sth}

  • 公式引用:\eqref{sth}
  • label应放在caption下面,否则ref标号会不正确

中文

  • 间距

    latex \begin{CJK}{GBK}{song} //英文换行,换行时默认加空格 \begin{CJK*}{GBK}{song} //中文换行,避免多余的空格 CJKtilde //重定义‘~’, 使得这个符号不再代表一个不可断行的空格, 而是一个可断行的弹性距离, 加在中文和英文之间调整它们的距离(一般是一个 CJK 字符的 1/4 大小的空格).

  • 标题

    latex \renewcommand\tablename{表} %表标题为中文而不是table \renewcommand\figurename{图}

  • 日期

    latex \renewcommand{\today}{\number\year 年 \number\month 月 \number\day 日} %\today时显示中文日期

Harttle

致力于简单的、一致的、高效的前端开发

看看这个?