此篇基本上是译文,原文是 Victor Eijkhout 所著的《TeX by Topic》的第四章。译文项目参见:CTeX-org/tex-by-topic-cn
转载请保留本段文字,尊重原作者和译者版权。
由于原著使用 GFDL,故而本文也被传染地同样使用 GFDL 许可,而不是本站默认的 BY-NC-SA 4.0 许可。

TeX 中的水平与竖直盒子分别是水平与竖直列表内容的容器。盒子可保存在盒子寄存器当中。本章讨论盒子寄存器,以及关于盒子尺寸、盒子内容相互位置的问题。

所涉命令编目:

  • \hbox: 构造一个水平盒子。
  • \vbox: 构造一个竖直盒子,其参考点(reference point)是最后一个元素。
  • \vtop: 构造一个竖直盒子,其参考点是第一个元素。
  • \vcenter: 构造一个在竖直方向于数学轴(math axis)居中的竖直盒子;该命令仅在数学模式下使用。
  • \vsplit: 将竖直盒子顶部部分分离。
  • \box: 使用盒子寄存器,而后清空它。
  • \setbox: 将盒子赋值给一个盒子寄存器。
  • \copy: 使用盒子寄存器,但保留其中内容而不清空。
  • \ifhbox \ifvbox: 判断盒子寄存器中保存的是水平盒子还是竖直盒子。
  • \ifvoid: 判断盒子寄存器是否为空。
  • \newbox: 分配新的盒子寄存器。
  • \unhbox \unvbox: 将保存有水平盒子或竖直盒子的寄存器解包,并将其中内容追加到当前的水平列表或竖直列表中,而后清空寄存器。
  • \unhcopy \unvcopy: 与 \unhbox\unvbox 的行为相同,但不清空寄存器。
  • \ht \dp \wd: 返回及设置盒子寄存器中盒子的高度、深度、宽度。
  • \boxmaxdepth: 该命令表示 TeX 所允许的盒子的最大深度。在 plain TeX 中,它的默认值是 \maxdimen
  • \splitmaxdepth: 该命令表示 TeX 所允许的由 \vsplit 生成盒子的最大深度。
  • \badness: 刚刚构造的盒子的劣度。
  • \hfuzz \vfuzz: 该命令表示水平或竖直盒子的尺寸超出指定尺寸的阈值;当超过该阈值时,TeX 会考虑将其认定为溢出的(overfull)盒子。
  • \hbadness \vbadness: 该命令表示一个阈值;当盒子的劣度超过该阈值时,TeX 会将相应盒子认定为欠满的(underfull)或者溢出的。
  • \overfullrule: 当水平盒子溢出时,TeX 会打印一条标尺,以表明有溢出的水平盒子;该命令表示上述标尺的宽度。
  • \hsize: 该命令表示在水平盒子内文本排版可用的行宽。
  • \vsize: 该命令表示页盒子(page box)的高度。
  • \lastbox: 若最后追加进当前列表的内容是一个盒子,则该寄存器会保存上述盒子。
  • \raise \lower: 这两个命令用于在水平模式中调整盒子的垂直位置。
  • \moveleft \moveright: 这两个命令用于在竖直模式中调整盒子的水平位置。
  • \everyhbox \everyvbox: 这两个命令分别用于在每个水平盒子或竖直盒子开头处插入的记号列表。
阅读全文 »

此篇基本上是译文,原文是 Victor Eijkhout 所著的《TeX by Topic》的第四章。译文项目参见:CTeX-org/tex-by-topic-cn
转载请保留本段文字,尊重原作者和译者版权。
由于原著使用 GFDL,故而本文也被传染地同样使用 GFDL 许可,而不是本站默认的 BY-NC-SA 4.0 许可。

在文本模式下,TeX 会从「当前字体」中取用字符。本章讨论 TeX 是如何识别不同字体的,以及字体都有哪些属性。

所涉命令编目:

  • \font: 该命令可声明一个用于指定字体的控制序列。
  • \fontname: 字体的外部名字。
  • \nullfont: 在特殊情况下,TeX 会使用空字体。这是空字体的名字。
  • \hyphenchar: 字体中连字符的序号。
  • \defaulthyphenchar: 字体装载时 \hyphenchar 的默认值。在 plain TeX 中,默认是 `-
  • \fontdimen: 该命令可访问多种字体参数。
  • \/: 倾斜校正原语。
  • \noboundary: 忽略隐式边界字符。
阅读全文 »

此篇基本上是译文,原文是 Victor Eijkhout 所著的《TeX by Topic》的第三章。译文项目参见:CTeX-org/tex-by-topic-cn
转载请保留本段文字,尊重原作者和译者版权。
由于原著使用 GFDL,故而本文也被传染地同样使用 GFDL 许可,而不是本站默认的 BY-NC-SA 4.0 许可。

TeX 在其内部使用字符编码来表示字符;本章讨论字符编码及相关命令。

所涉命令编目:

  • \char: 显式指定所要排版的字符。
  • \chardef: 将一个控制序列定义为一个字符编码的同义词。
  • \accent: 放置重音符号的命令。
  • \if: 测试字符编码是否相等。
  • \ifx: 测试字符编码与分类码是否都相等。
  • \let: 将一个控制序列定义为一个记号的同义词。
  • \uccode: 对于给定的字符编码,查询或设置其对应的大写变体的编码。
  • \lccode: 对于给定的字符编码,查询或设置其对应的小写变体的编码。
  • \uppercase: 将普通文本(<general text>)转换为大写形式。
  • \lowercase: 将普通文本(<general text>)转换为小写形式。
  • \string: 将一个记号转换为一个字符串。
  • \escapechar: 将控制序列转换为一串字符记号时,用作转义字符的字符之编码。在 IniTeX 中默认为 92(\)。
阅读全文 »

此篇基本上是译文,原文是 Victor Eijkhout 所著的《TeX by Topic》的第二章。译文项目参见:CTeX-org/tex-by-topic-cn
转载请保留本段文字,尊重原作者和译者版权。
由于原著使用 GFDL,故而本文也被传染地同样使用 GFDL 许可,而不是本站默认的 BY-NC-SA 4.0 许可。

读取字符时,TeX 的输入处理器会为字符分配分类码。根据读取到字符的分类码,输入处理器会在三种内部状态之间切换。本章讨论 TeX 是如何读取字符的,以及字符的分类码是如何影响读取行为的。本章还将讨论空格及行尾的相关问题。

阅读全文 »

对于我这种普通程序员来说,Linux 内核是神秘而高贵的,轻易我们不敢去说内核相关的事情。不过,有时候逼不得已,也得硬着头皮对内核进行一些调试。(比如发现一些异常现象,怀疑是某个系统调用的异常行为在作祟时)为此,学习一些内核调试技术也是有必要的。

限于个人水平,此篇以操作指南为主,不涉及过多的理论知识——其实是我不懂。

阅读全文 »

VSCode 是微软主导开发的新一代编辑器。自其开发之初,就与 Sublime Text 以及 GitHub 主导开发的 Atom 对标。几年前,VSCode 中的 LaTeX 支持还很不完善,考虑到我个人对 LaTeX 的强需求,当时没有从 Sublime Text 切换到 VSCode 上。时至今日,VSCode 发展得已经很不错。前些日子,东升在他的新主页上发布了一篇博文,讲解如何在当前的 VSCode 上配置 LaTeX IDE。看过之后,我就心动了,立即配置好来使用。

不过,由于东升不在 macOS 下工作,他的博文中没有提到如何让 VSCode 在 macOS 上与诸如 Skim 的外部 PDF 浏览器配合工作——特别是 LaTeX 的正反跳转。检索互联网之后,也没有完整可用的方法。甚至 LaTeX workshop 官方的说法也是不支持,需要用户自己想办法绕过。故此有这篇文章。

阅读全文 »