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

特殊字符

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

  • @字符

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

标题页

  • report中添加标题页

      \thispagestyle{empty}	//标题页不占页码
      \maketitle
    
  • article中添加标题页

      \thispagestyle{empty}	//标题页不占页码
      \maketitle
      \newpage
    
  • 作者

      \author{a \and b}
    

图表

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

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

公式

  • 数学函数

      \sin	//sin函数
    
  • 分段函数

      f(x)=\begin{cases}
          1 & x<0 \\
          -1 & n>1
      \end{cases}
    
  • 定界符:\left.,\right|

布局

  • 页眉页脚

      \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}
    
  • 控制页码格式

      \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标号会不正确

中文

  • 间距

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

      \renewcommand\tablename{}  %表标题为中文而不是table
      \renewcommand\figurename{}
    
  • 日期

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

转载请注明来源: http://harttle.com/2015/05/02/tex-note.html

Harttle

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

看看这个?