latex hyperref_LaTeX 使用心得

2019年8月4日 更新:

LaTeX Commands 插件已经提交到 VSCode 扩展商店,现已可以搜索到。

8ec54e2b781cd6fb8a04687bab621034.png

从 2016 年开始接触 LaTeX ,到现在陆陆续续用了三年多了,有很多使用技巧需要总结一下。 这篇博客主要记录技巧,对于一些基础的操作不会进行说明。

编辑器的选用

我用过多款免费的 LaTeX 编辑器,收费破解版的没有用过。 总结下来我觉得需要符合以下条件才是一个好用的编辑器:

  • 自动提示和补全
  • 自定义宏替换
  • 轻量,跨平台
  • 可即时预览

于是又以下解决方案:

  • TeXStudio
  • Visual Studio Code + LaTeX Workshop + LaTeX Commands 扩展

TeXStudio 在 Windows 上由于对高分屏的支持不够好,因此我大部分情况下还用的是 Visual Studio Code 。 但是 TeXStudio 在自动提示和不全以及宏替换方面其实比 VSCode 更好,它似乎可以分析宏包提取出宏包中的命令。 但是作为颜控,以及平常 VSCode 用的最多,因此最终还是选择了 VSCode 。

LaTeX Workshop 是在应用商店中可以搜索到的扩展, LaTeX Commands 是我自己写的扩展,还没有上应用商店。 日后完善后会考虑登录应用商店。

这篇博客也是主要针对 Visual Studio Code 进行的经验总结,不过大部分都可以用于其他软件。

数学公式

LaTeX 最强大的功能是做数学公式,这点应该没有异议。但是往往数学公式做起来会非常繁琐。 尤其是中英文混杂的时候。这时就需要实现以下功能:

  • 快捷键插入数学符号 $ $$$ $$ 并自动将光标导航到中间位置,输入完成后一键将光标切换到最后;
  • 常用的符号有一个固定的宏定义或宏替换,如矩阵 $mathbf{A}$ 、转置符号 $^mathrm{T}$ 等符号;
  • 常用符号组可以快捷输入,如常用的 $x_1, x_2, cdots, x_n$ 等符号组;

快捷数学环境

我使用 VSCode 插件实现的这个功能。安装 LaTeX Commands 后,会增加 Inline Math 命令和 Display Math 命令, 默认绑定的快捷键是 Ctrl + Alt + MCtrl + Alt + Shift + M ,这样可以实现快捷地插入数学环境符号。

当然这个功能也可以用于 Markdown ,目前没有做文档类型的约束。

常用数学符号

下面列出了一些常用的数学符号的 LaTeX 宏定义

newcommand{diff}{mathop{}!mathrm{d}}     % 微分符号
newcommand{cpi}{symrm{pi}}                % 圆周率常量符号
newcommand{trans}{^symrm{T}}               % 矩阵转置符号
newcommand{hfrac}[2]{left. {#1} middle/ {#2} right.}   % 横向分数
newcommand{ddfrac}[2]{displaystyle{frac{displaystyle{#1}}{displaystyle{#2}}}}  % 显示模式分数
newcommand{e}[1]{times 10^{#1}}            % 科学计数法符号
newcommand{rvec}[1]{left(#1right)}        % 行向量
newcommand{cvec}[1]{rvec{#1}^{symrm{T}}}  % 列向量
newcommand{diag}[1]{symrm{diag}left(#1right)}  % 对角矩阵

由于矩阵的输入也非常繁琐,需要输入 mathbf{A} ,既不便于写作也不便于阅读, 因此可以将拉丁字母表示的矩阵单独定义为宏,以实现方便快捷输入。 由于比较长,这里只截取一部分。

newcommand{va}{symbf{a}}
newcommand{vb}{symbf{b}}
newcommand{vc}{symbf{c}}
newcommand{vd}{symbf{d}}
newcommand{ve}{symbf{e}}
newcommand{vA}{symbf{A}}
newcommand{vB}{symbf{B}}
newcommand{vC}{symbf{C}}
newcommand{vD}{symbf{D}}
newcommand{vE}{symbf{E}}

由于符号 mp 是减加符号,因此只能用 v 前缀表示矩阵和向量。

常用符号组

利用 VSCode Code 代码片段(Snippets)的功能,可以定义符号组。例如,如果定义如下代码片段:

{
    "Sequence 1 to n": {
        "prefix": "seq1n",
        "body": "${3}1${1:,} ${3}2${1:,} cdots${1:,} ${3}${2:n}"
    },
    "Sequence add 1 to n": {
        "prefix": "seqadd1n",
        "body": "$1_{1}${2:,} $1_{2}${2:,} cdots${2:,} $1_{${3:n}}$0"
    }
}

则可以通过键入 seq1n 输入 1, 2, cdots, n 即 $1,2,cdots,n$ , 光标可以随着代码片段中 ${} 标注的顺序进行跳转。 同样,可以通过键入 seqadd1n 键入 _1, _2, cdots, _n 以实现输入 $x_1,x_2,cdots,x_n$ 。

格式控制

格式可以包括很多,这里就不再进行分类了,仅作简单的罗列,按需取用即可。

摘要和关键字环境

中文论文的摘要和关键字的格式要求 LaTeX 中往往不满足,但是可以使用自定义的环境实现。

newenvironment{Abstract}{noindenttextbf{摘hspace{1em}要}quad!}{}
newenvironment{Keywords}{noindenttextbf{关键词}quad!}{}

其中命令 ! 的效果是当你以如下方式使用该环境时:

begin{Abstract}
  这是一段摘要
end{Abstract}

摘要字样和摘要内容之间不会增加一个空格。

如果要摘要占通栏、正文分栏,则这样使用

documentclass[UTF8,hyperref,a4paper,twocolumn]{ctexart}

begin{document}
  twocolumn[{
    maketitle
    begin{Abstract}
      摘要内容
    end{Abstract}

    begin{Keywords}
      关键词
    end{Keywords}
    vspace{2baselineskip}
  }]

  正文内容

列表间距设置

使用 enumitem 宏包进行设置,可以取消与上下段落的间距、设置标签宽度等。

usepackage[inline]{enumitem}
setlist[enumerate,1]{topsep=0pt,partopsep=0pt,parsep=0pt,itemsep=0pt,itemjoin=quadquad,align=right,leftmargin=4em,label=(arabic*)}

参考文献的设置

中文论文的参考文献使用 GB7714 的格式要求。写好 bib 文件后,导言区通过如下命令设置格式

usepackage[backend=biber,bibstyle=gb7714-2015,citestyle=gb7714-2015,hyperref=true]{biblatex}
addbibresource{HouseHLM.bib}

最后打印参考文献列表时使用如下命令:

printbibliography[title=参考文献]

积分号格式设置

意外在网上发现一个 varint.sty 的宏包,里面可以定义不同的积分号格式。使用方法为:

usepackage[fourier]{varint}

该宏包可以在 GitHub 上搜索到。

排版的技巧

单图和多图

图片环境可以整个使用代码片段来快捷插入,如

{
  "Single Figure": {
    "prefix": "singlefig",
    "body": [
      "begin{figure}[hbtp]",
      "tcentering",
      "tincludegraphics[width=$1linewidth]{$2}",
      "tcaption{$3}",
      "tlabel{fig:$3}",
      "end{figure}"
    ]
  }
}

则通过键入 singlefig 即可替换为如下的图片环境命令

begin{figure}[hbtp]
  centering
  includegraphics[width=linewidth]{}
  caption{}
  label{}
end{figure}

对于多图环境,可以使用 subfloat 命令实现,代码片段如下

{
  "Multiple Figure": {
    "prefix": "multifig",
    "body": [
      "begin{figure}[hbtp]",
      "tcentering",
      "tsubfloat[$1]{",
      "ttincludegraphics[width=$2linewidth]{$3}",
      "t}$0",
      "tcaption{$4}",
      "tlabel{fig:$4}",
      "end{figure}"
    ]
  }
}

对应的 LaTeX 代码为

begin{figure}[hbtp]
  centering
  subfloat[]{
    includegraphics[width=linewidth]{}
  }
  caption{}
  label{fig:}
end{figure}

可以在后面增加其他的 subfloat ,这个命令的可选参数中填写子图标题即可。

进度条

在做 beamer 时,对于一些进度类的文字,可以使用进度条代替,显得更直观。可以定义如下

definecolor{color1}{HTML}{4F5D66}  % light blue
definecolor{color2}{HTML}{fafafa}  % dark grey
newcommand{progressbar}[2][2em]{%
    setlength{fboxsep}{0pt}
    framebox[#1][l]{textcolor{color1}{rule{#1 * real{#2} / 100}{1.5ex}}}
}

这样使用 progressbar{80} 就可以绘制出 80% 的进度条。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值