MATHTH整理
这个世界上有些编辑器, 初次使用时你会觉得这玩意简直奇丑无比, 甚至怀疑这种东西很糟糕, 比如 Vim, Emacs 和TeXworks , 不过当你真正去使用它, 去开发其进阶的功能后, 才会验证那句话
人不可貌相, 海水不可斗量.
长得丑的东西, 如果其还能长期存在, 那么它一定有其过人之处. 最近我在开始使用 Vim 才深刻地领会这个道理. 仔细想想, 其实就明白了, 为什么TeXworks 会设计得不那么美观呢, 其实其设计理念与 Vim , Emacs 等设计理念是一致得,它们有着相似的设计哲学, 华美的界面对它们来说没有什么用处, 因为这类编辑器的核心目标是要高效地实现写作, 对它们而已,使用键盘上的快捷键来实现高效编辑才是其核心, 华美的界面对它们来说一方面浪费了计算机的内存, 另一方面来对于使用键盘输入的人来说, 界面对他们几乎没有什么用.
当然, Vim 有许多的快捷键能提高我们编辑的效率, 最近希望能将这两者进行整合,于是自然就产生了如下问题.
问题: 是否存在一种将 Vim 和 TeXworks 的功能进行整合的办法来提高使用 LaTeX 的效率?
本文是对使用 TeXworks 的使用技巧进行的若干总结, 期待着帮助读到这份文档的读者能大幅度地提高 TeX 的写作速度.
当然终极的杀手级武器是使用 Vim 或者 Emacs 这种级别的编辑器来编辑 TeX , 不过不可否认的是, 学习使用这种级别的编辑的经历通常不会让人感动愉悦, 不过话又说回来, 只有经历了痛苦, 那么文本编辑对你来说才会进入新境界. 细想来,人生也是如此.
TeXworks 拥有大量的快捷键, 熟练掌握这些快捷键可以减少一些界面操作,可以避免手指离开键盘区, 这样才不需要在将手在键盘和鼠标之间进行大量的切换, 这也是许多计算机高手喜欢使用快捷键的原因.
注意, TeXworks 预定义了许多常用操作的快捷键, 不过如果觉得不足,那么你可以使用脚本自定义更多符合你自己的使用习惯的快捷键.
0. 编码的使用方式
TeXWorks 默认使用 UTF-8 编码,如果你需要编辑用 GBK 编码的tex文件(比如 CCT 或者 CJK 文件),可以在文件的最前面加上如下一行以免乱码或者编译出错
% !TEX encoding = System
注4:你也可以通过在文件最前面再加如下一行指定默认的编译命令:
% !TEX program = XeLaTeX
1. 使用模版
我们写作的大多数文件, 几乎都在导言区使用类似的指令, 所以每次都输入一遍比较费时费力;即使复制粘贴, 也很麻烦. TeXworks 提供模板功能, 来简化这个工作.
1.1 使用默认安装的模板
默认情况下, TeXworks 提供了几个模版, 执行 “file→New from Template” 可以看到. 但是这些模版都是英文的.
1.2 自定义模板
你可以自己写一个模版(其实就是一个普通的.tex文件, 不过只是包含框架), 放到类似下面
C:\Users\MATHTH\.texlive2018\texmf-config\texworks\templates
的安装路径下, 当然, 如果你实在找不到, 好的办法使用 Everything 搜索关键词 texmf-config 通常就能找到这个路径了.
这里建议为自己的模板通过文件夹进行分类, 就像自带模板的安排方式的一样.
2. 拼写检查
使用 TeXworks 进行写作, 拼写检查不可缺少. 因为我们难免写个错别字. 默认情况, TeXworks 没有搭载拼写检查字典, 需要我们自己配置.
首先, 下载词典. 我们使用openoffice的词典即可, 到它的下载页面:
http://wiki.openoffice.org/wiki/Dictionaries
找到合适的语言, 就可以下载了. 接下来到
C:\Users\MATHTH.texlive2018\texmf-config\texworks
路径下, 新建 dictionaries 文件夹.
最后, 将刚才解压的文件放到 dictionaries 文件夹内. 重启 TeXworks, 可以在“Edit→Spelling”中发现刚才成功安装的拼写词典. 为了每次都能使用, 去 “Edit→Preferences→Edit→Spell-check language”中选择刚才添加的词典, 这样就可以在拼写的时候帮我们进行检查了.
遗憾的是, 中文的拼写检查还不是很好弄, 这主要是因为中文的编码远比西文编码要复杂.
3. 局部编译技巧与源代码和预览之间切换
这是一个我们经常用到的功能. 编译好了的文档, 我们预览的时候, 发现有某处需要修改, 我们希望立刻跳转到对应的源代码. 很简单, 按住ctrl键, 在预览有问题的地方单击鼠标左键,光标就会跳转到源代码文件中相应的位置. 反过来也一样, 在源代码的某处 ctrl+单击鼠标左键, 也会跳转到预览界面相应位置.
下面我们考虑如何进行局部编译.
在导言区用 includeonly 命令,比如你要include
的为chap1,chap2,chap3,chap4,chap5,…,chapn,如果在导言区中声明\includeonly{chapi,chapj,chapk,...,chapr}
,则只会编译这个括号里面的内容。没有改动的部分就可以从 \includeonly
里去掉, 这样就不会重编译那部分,但是这部分占用的页码以及各种计数器都会被计算在内.
最后需要完整稿样的时候再去掉 \includeonly
语句.
4. 显示文档导航
执行 “Windows→Show→Tags” 可以在左侧显示导航, 通过导航我们能清晰的看到文档的大纲布局.也就是我们通常所说的文档的逻辑结构, 看到文档的逻辑结构对于整理写作思路是很有好处的.同时导航也能帮助我们在文档内进行快速的跳转.
5. 删除辅助文件
编译过程中, 会产生一些辅助文件.但是, 我们最终需要保存的只是源文件和pdf文件.当然, 我们可以自己的工作路径下面手工删除不必要的文件, 不过TeXworks提供了更好的办法. 执行 “File→Remove Aux Files”即可.
6. 语法高亮
在Windows系统安装TeXLive后, 我们可以到
C:\Users.texlive2013\texmf-config\TeXworkss\configuration
路径 (注意, 这不是TeXLive的最初的安装路径)下的 syntax-patterns 文件中看到定义了语法高亮. 如果需要自定义语法高亮内容, 你可以修改这个文件.
7. 快捷键
当然除了这些自动补全的快捷键, 在TeXworks中, 如下的这些快捷键将能提高你在TeXworks中输入的速度.
Shortcut | Action |
---|---|
Ctrl+T | Typeset |
Ctrl+b | Balance Delimiters |
Ctrl+N | New |
Ctrl+Shift+N | New from Template |
Ctrl+W | close |
Ctrl+Shift+S | Save As |
Ctrl+All+S | Save All |
Ctrl+Q | Quit TeXworks |
Ctrl+F | Find |
Ctrl+G | Find Again |
Ctrl+R | Replace |
Ctrl+Shift+R | Replace Again |
Ctrl+E | Copy to Find |
Ctrl+Shift+E | Copy to Replace |
Ctrl+H | Find Selection |
Ctrl+L | Go to Line |
Ctrl+= | Show Selection |
Ctrl+Shift+] | Comment |
Ctrl+Shift+[
|
Uncomment |
Ctrl+] | Indent |
Ctrl+[
|
Unindent |
Ctrl+'
|
Go to Preview |
Ctrl+\ | Show Console Output |
Home | 移动到行首 |
Ctrl+Home | 文档开头 |
End | 移动到行尾 |
Ctrl+End | 文档结尾 |
8. TeXworks 的自动补全功能
在首选项中勾选了自动补全之后, 就可以使用tab键使用自动补全了.如果有多个选项, 那就多按几下tab键, 在几个选项之间循环.
TeXworks的自动补全功能是很强大的, 用习惯之后将是十分高效地解决你的写作问题.
首先, 对TeXworks的自动补全功能解释一下
在TeXworks的编辑窗里面键入 xa, 按下tab键, 出现了\alpha, 这就是最简单的补全, 对简单命令的补全.
在TeXworks键入usep, 按下tab键, 得到了\usepackage{}, 这就是最普通的补全, 给出命令后的必须参数括号, 并且光标停留在括号内.
在TeXworks键入usepo, 按下tab, 得到了\usepackage[]{•}, 这是对含有可选参数的命令的补全, 光标停在可选参数的中括号内, 当我们把可选参数补完之后, 按下ctrl+tab组合键, 光标进入后面的必需参数括号内(后面的位置称为placeholder). 其中ctrl+tab是移向往下最接近的一个placeholder, shift+tab是移向往上最近的一个placeholder.
在刚才的例子中, 我们只按了一次tab, 假如我们键入的引导词是若干个命令的引导词的前部分, 则继续按下tab键会在这几个命令中切换, 得到你想要的命令.
好了, 为了使用自动补全, 我们需要记住引导词.在TeXworks中, 已经定义了很多的引导词, 而且也允许用户自己定义新的引导词.更具体的内容参看TeXworks的使用说明.
8.1 初级——预设快捷键
这里对引导词分类.
8.1.1 环境类
对于环境的补全, 引导词第一个字母均为b, 后面字母个数不定, 但是, 对绝大多数的环境, 只需要使用环境名的前三个字母就行, 即为 "b+xyz+[tab]".
比如 itemize 环境, 根据规则, 我们需要键入 "bite", 然后按下tab键, 即得到了
\begin{itemize}
\item
\end{itemize}•
符合此规则的环境有
环境名 | 实现方式 | 环境名 | 实现方式 |
---|---|---|---|
document | abstract | align | tabular |
appendix | bmatrix | pmatrix | cases |
description | center | equation | enumerate |
eqnarray | figure | flalign | gather |
item | letter | list | minipage |
multiline | picture | split | subequations |
theorem | titlepage | trivlist | varwidth |
verbatim |
注意事项
-
如果环境名开头带有the, 则xyz为除去the之后的环境名的前三个字母.
比如bind=theindex环境、bbib=thebibliography环境.
星号环境在原来引导词后加 s, 即输入 b+xyz+s+tab , 如果环境有可选项, 需要使用可选项, 则需要在末尾加上o (option的意思), 即为 b+xyz+o+tab.
-
几个特殊的环境
align=b+ali(s) alignat=b+ali+at(s) aligned=b+ali+ed alignedat=b+ali+edat(o) verbatim=bver+tab verse=bvers tabular=b+tab tabularx=b+tabx tabbing=b+tabb table=b+tabl、b+tbl -
章节命令:
\cha +tab =\chapter{} \sec+tab=\section{} \ssec+tab =\subsection{} \sssec+tab=\subsubsection{} -
参考文献
bbib =\begin{thebibliography} bibitem=\bibitem bibitemo+tab=\bibitem[ ] bibs+tab =\bibliographystyle{ } bib+tab=\bibliography{} -
居左、居右环境、居中
居左 居中 居右 flushleft=bfll+tab centering=cen+tab flushright=bflr+tab
8.1.2 字体
8.1.2.1 普通字体命令
(1.1)\textbf \texttt \textsf \textsc \texts \textit \textup.
方法一、由字体属性的两个关键字构成, 比如** **sc+[tab****键], textit有问题, em+tab 产生 \emph{}
方法二 \text(b/t/s/i/w...)+[tab键]:例如 \textb+tab 产生的是 \textbf{}. 注意:\textwidth 也是 \textw
(1.2)、属性的第二种表示方式、"属性关键字+d"
bfd:\bfseries
ttd:\ttfamily
sfd:\sffamily
scd:\scshape
sld:\slshape
itd:\itshape
upd:\upshape
emd:\em</pre>
8.1.2.2 数学字体命令:
由这些 \mathbf, \mathrm, \mathcal, \mathsf, \mathtt, \mattit 引导词为"m+字体属性关键字". 通常字体属性只需要取前两个字母即可. 比如: mbf+tab=\mathbf{}, \mathcal=mca+tab=\mathcal{}
-
希腊字母类 方法: x+符号首字母=tab 可得到小写的希腊字母,如果要大写需要用 xc+符号首字母+tab, 例如
xa+tab 产生 \alpha, xcg+tab 产生 \Gamma.
-
适用的字母有:
\alpha \beta \chi \delta \gamma \Gamma \iota \mu \lambada \Lambda \mu \nu \omega \Omega \sigma \zeta \rho \tau \upsilon \xi \Xi -
注意以下相同首字母的写法(特殊):
\epsilon=xe+tab \varepsilon=xve+tab \eta =xet+tab \pi =xp+tab \varphi=xvph+tab \phi =xph+tab \Phi=xcph+tab \theta =xth+tab \psi=xph+tab \Psi =xcps+tab \tau =xt+tab -
杂项与普通命令:
4.1 括号 dd+tab =( )•. d+希腊字母表达式=(希腊字母) 例如:dxa = (\alpha)
4.2 普通命令
usep+tab=\usepackage{} foo+tab=\footnote{} frac+tab=\frac{}{•} fboxo +tab =\framebox[]{•} href+tab=\href{}{•} incg+tab=\includegraphics{} toc+tab =\tableofcontents npg+tab=\newpage newe +tab=\newenvironment{}{•}{•} \fbo+tab=\fbox{} newc+tab=\newcommand{}{•} incgo+tab=\includegraphics[]{•} pgref+tab =\pageref{} pgs +tab =\pagestyle{} sqrt+tab =\sqrt{} listf+tab =\listoffigures list +tab =\listoftables multic+tab =\multicolumn{}{•}{•}
默认的自动补全功能很好, 但是有时也很别扭.所以为了满足个人所需, 最好自己进行相应配置.
默认相关配置文件都放在 ~/.TeXworks/completion/, 有3个, 分别是
tw-basic.txt,
w-contex.txt
tw-latex.txt
注意, 就算你改变TeXlive的安装路径, 那么texwork的配置路径有可能还是在Windows 系统的 C盘里,大致在这个位置. C:\Users\MATHTH.texlive2017\texmf-config\texworks\completion 实在找不到的话,简单的方式是使用Everything 搜索关键词 completion, 通常都能找到.
下面我们看在 TeXworks 中的补齐大致像什么样子, 比如我们输入 barr+Tab, 自动补齐的结果为
\begin{array}
\end{array}•
这里的 • 很怪, 如果使用Ctrl+Tab(Shift+Tab是定位到向上的最近一个•, 而Ctrl+Tab是定位到向下的最近一个•, 这里的 •, 按照 http://code.google.com/p/TeXworkss/wiki/CodeCompletion 指出的: the Unicode character U+2022 (BULLET) is used as a placeholder where text should be entered; navigate through to the placeholders with <Ctrl>+<Tab> and <Shift>+<Ctrl>+<Tab>), 那么光标就会立即定位到•, 这对于下一次输入通常会带来麻烦.我们自然希望修改 barr, 使得用Tab自动补全后, 利用Ctrl+Tab会定位到\end{array}的下一行, 也就是光标在 • 处或者光标在 * 处.
\begin{array}
\end{array}
•
那么只需要把~/.TeXworkss/completion/tw-latex.txt中的第8行
barr:=\begin{array}#RET##INS##RET#\end{array}•
修改为
barr:=\begin{array}#RET##INS##RET#\end{array}#RET# •
然后保存退出, 重启 TeXworks 即可.以后你可以在输入完成了array的内容后使用Ctrl+Tab定位到•, 接着输入就可以了.
从以上我们看出,其定义模式都是
引导词:=补全内容
例如
barr:=\begin{array}#RET##INS##RET#\end{array}•
- 补全内容中的 #RET# 表示一个换行.
- #INS# 表示自动补全后光标停留位置,
- • 表示占位符(按Ctrl+Tab后光标将移到下一个最近的占位符)
现在我们依照上面的格式来自定义一些快捷键
例如: 我需要键入bdef+tab 后将得到
\begin{definition}
\end{definition}
且光标停留在中间的空行处,那么我们只需要在tw-latex.txt文件中添加一行
bdef:=\begin{definition}#RET##INS##RET#\end{theorem}
即可.
在数学上, 定义、推论、引理、例子、证明、命题等这样的环境是常用的,它们都可以这样定义,
bdef:=\begin{definition}#RET##INS##RET#\end{definition}
bcor:=\begin{corollary}#RET##INS##RET#\end{corollary}
blem:=\begin{lemma}#RET##INS##RET#\end{lemma}
bexa:=\begin{example}#RET##INS##RET#\end{example}
bpro:=\begin{proof}#RET##INS##RET#\end{proof}
bprop:=\begin{proposition}#RET##INS##RET#\end{proposition}
当然还有些符号如果是自己定义的话,最好放置在导言区,因为别用你的源文件编译可以能出错,当然,如果你想省事,在这个配置文件中一次定义,整个系统有效也不妨是个好的方法.
比如数学期望 作为运算符就可以如下方式来定义.
expe:=\mathbb{E}(#INS#)
其他的可以类似定义.
8.2 中级技巧—自定义快捷键
在TeXworks中, 快捷键的定义非常人性化, 比如你不习惯系统预设的快捷键, 可以根据自己的习惯, 重新设置该动作的快捷键. 具体方法为:
在用户家目录下的.texlive2017\texmf-config\texworks\configuration文件夹(我的为 C:\Users\x.texlive2017\texmf-config\texworks\configuration)中新建一个名为“shortcuts.ini”的文件.
在该文件中写入你需要为某个动作添加的快捷键. 如: 将排版快捷键改为F5.
保存该文件, 然后重启TeXworks. 就可以看到, 排版的快捷键变成了F5.
TeXworks中预设了一些基本的动作. 如下所示:编辑框中的动作:预览框中的动作
8.3 高级技巧—自定义脚本快捷键
TeXworks 还支持一些扩展脚本功能, 可以通过 js、python 或者 lua脚本来丰富 TeXworks 的功能. 这些脚本也可以自定义快捷键, 以实现快速使用的目的. 熟悉了这些功能, 你就会深刻的感受到键盘的键位不够用了. 比如: 在修改论文时, 需要将修改的部分标红, 对需要删除的语句使用删除号, 对一些特殊字句使用斜体. 这些都可以通过脚本和快捷键轻松搞定.