Texmacs是一款非常容易上手和方便的排版工具。它拥有的方便特性对于经常写数学笔记和作业的我非常方便。其他类似于 Typora 的 Markdown 工具虽然也拥有一部分的优势,但是面对大量数学公式时,并不能快速输入数学公式,解析使用的 MathJax 和 KaTeX 也没有那么流畅。
熟悉 LaTeX 的用户很容易能上手 TeXmacs,但是想要进阶使用并没有那么容易。比如最近我厌烦了用鼠标点击定理环境(包括定义、命题等等),使用 \theorem
之类的命令也似乎增加不了多少效率。于是我想着能新建一个新的宏,使用 \thm
代替定理环境的命令。
然而解决的进展的并不一帆风顺。我尝试查看官方文档以及谷歌搜索寻找答案,没有找到任何有用的资料。一无所获的我想到的是去看看 TeXmacs 的源文件。幸运的是我知道了相关文件,
|
|
里面有类似于 <new-theorem|theorem|Theorem>
的大量内容。我尝试添加类似的一行命令<new-theorem|thm|Theorem>
。之后重启程序,不过并没有什么用处,:cry:。
之后我重新打开了宏编辑器,看了看 theorem
的宏命令。不过宏命令(定义内容)可以复制出来,但是定义头 <theorem | body>:=
无法复制,且后面的 body
是特殊的 Argument
, 无法复制(在定义内容中也有)。当然单纯键入body
是无效的。当时我尝试的例子是 definition
环境。首先尝试过先输入未定义的 \def
回车,然后在焦点工具栏中选择扳手符号设置,在设置里,可以(复制粘贴)填入 definition
环境的定义内容。这样的效果是输入 \def
并且回车后可以得到一个看起来符合条件的 \definition
,但是由于无法在定义头中写明body
,故而只会生成 definition
的空环境,无法输入内容,如下图。
由于发现,宏编辑器中并不能很好地利用源文件和宏命令的工具栏,故而我转向打开文件的 preamble
格式(菜单栏 Tools>Macros>Edit preamble...
)。
根据 preamble 的工具栏中的各个命令的名称,我猜测可以使用 asign
来定义一个环境的别名。于是我尝试输入:
|
|
这样得到的 \def
只会输出文字 definition,并不是我想要的。如果给 definition
加个反斜杠,可以得到之前的方法得到的半成品。于是我尝试所有的源码宏命令的各个选项,偶然间我发现可以给 definition 加一个 \value
命令。这样完美解决了这一需求,参见下面这个 gif。
不过直接在文档内添加这一指令,生效后会隐藏,但是可能会不小心删除。我们可以把它添加到 preamble
中的<hide-preamble| >
内。
whzecomjm
Jun 27, 2020 20:19:22
过了两天,我发现在 Macros editor 中直接修改 definition 的名字(只保留 def),再点击 OK,也是能做到使用 \def
来得到一个定义环境。我之前也有想过这样直接改,但是怕修改会替换原本的宏,导致前文中使用完整 definition 的环境会无法显示。实际上,这会生成一个新的宏,且不会对本来的宏产生影响。
另,打开 Extract style 可编辑宏和不显示的源码,这比 Edit preamble 更高效。
不过进一步发现上面两种方法都会导致导出 latex 不能编译或者生成大量的宏代码。今天看TeXmacs 作者的一篇介绍文章中讲到了一种新的方式,这种新的方式更加简便。即在 my-init-texmacs.scm
中加入如下代码即可:
|
|
之后输入 Def.
等就能自动生成定义环境等。
whzecomjm
Jun 30, 2020 10:50:44