数学输入速度慢

数学输入速度慢

我已经使用 LaTeX 有一段时间了,但我发现数学写作有点令人沮丧。我似乎花了相对较长的时间编写较长的数学表达式,有时很难看出从哪里{开始和结束。我希望尽可能快地写作。

输入每个符号的代码真的是最快的方法吗?有没有推荐的好的程序(具有 Word 的 MathType 精神)可以通过单击按钮来生成数学表达式?

答案1

和学习任何口语一样,掌握用 TeX 和 LaTeX 表达数学思想的技巧需要一些时间,而且需要大量练习才能真正熟练。而且,和学习任何口语一样,学习曲线在一段时间后会变得相当平坦,用 LaTeX 写数学似乎已经成为了第二天性。(补充一下:我使用 TeX 和 LaTeX 已经 20 多年了。)

话虽如此,我发现以下“技巧”确实有助于简化学习过程,并且它们往往可以为您节省大量的击键次数:

  • 一定要研究一下该软件包的手册amsmath;它们充满了有趣(值得一看!)公式的很好的例子。真的!amsmath软件包的用户指南展示了如何使用许多很棒的命令来排版方程式和输入矩阵,这里仅列举了两个数学写作的例子。

  • 使用提供各种语法高亮方法并高亮匹配的圆括号、方括号和花括号的文本编辑器。如果编辑器为您提供下拉菜单来选择和单击数学术语,那就更好了;但是,您可能会发现自己越来越少使用这项特定的支持。

  • 输入几个公式后,查看代码并确定是否有任何重复的代码片段,例如二阶偏导数、积分以及分数的分子和/或分母。如果这些元素出现得相当频繁,则值得在文档的序言中将它们定义为宏,并在正文中根据需要调用它们。例如,如果您有很多二阶偏导数,您可能需要定义一个宏,例如

    \newcommand{\secondp}[3]{\ensuremath{\displaystyle%
        \frac{\partial^{2}\!{#1}}{\partial{#2}\,\partial{#3}}}}
    

    您可以按如下方式调用此宏:\secondp{f(x,y)}{x}{y}或者,如果每个参数都由一个字符组成,则为。(当然,在, , 和\secondp f x y两边加上括号不会有什么坏处,而且它可能也会使代码更具可读性。)fxy

    如果你有很多自己的第二部分表达式怎么办?小菜一碟——只需定义另一个宏即可输入:

    \newcommand{\ownsp}[2]{\ensuremath{\displaystyle%
         \frac{\partial^{2}\!{#1}}{\partial{#2}^2}}}
    
    • 以这种方式使用宏有两个好处:

      1. 随着时间的推移,它们将为你节省大量打字时间,并且

      2. 它们将消除拼写错误的主要来源(并因此消除因必须追踪拼写错误而产生的挫败感!)。

      在频繁使用宏的过程中,您会发现冷静地审视公式变得非常自然,就像建筑评论家将建筑物视为一个整体,而不是像工人那样只关心如何放置下一块砖、石像鬼或其他东西!通过查看“大局”,您可以开发一种能力来发现建筑物中的缺陷,否则您将无法发现这些缺陷。例如,被积函数的某些部分是否“缺失”了?应该是减号而不是加号吗?

  • 此外,养成仔细检查代码的习惯,尽可能将数学表达式的内容与外观分开。我的意思是什么?LaTeX 的整个结构哲学的一个主要特征是将内容与外观分开;虽然外观(显然!)取决于内容,但它也受到内容格式决定的影响。虽然您可能对自己的格式决定感到满意,但您的论文顾问、期刊编辑或合著者可能希望使用不同的样式来格式化各种术语。如果您已经硬编码(使用较低级别的 LaTeX/TeX 命令)所有格式化命令,您将不得不花费大量时间重新格式化您的工作内容以满足这些新要求。

    以某个集合的基数为例A。有时(通常?)显示为|A|。现在,有些人喜欢这种格式选择,但其他人更喜欢||A||(双竖线)或其他格式。如果您已\card按如下方式定义宏:(\newcommand{\card}[1]{\ensuremath\left|#1\right|}实现前一种样式)并一直使用它,那么如果有人要求使用不同的样式,您的额外工作将很少。使用宏的一个附带好处\card是它强调代码的逻辑而不是外观——这绝不是坏事,对吧?

  • 举一个不同的例子:如果你有很多矩阵的行列式,你可能知道它们|A|在某些期刊中需要显示为 ,但在其他期刊中则显示为[A]det(A),而在其他期刊中则显示为不同的样式。为了不必重新格式化所有输入以满足特定期刊的格式要求,最好在\det每次输入矩阵的行列式时使用一个命名的宏。实际上,宏\det已经定义为“数学运算符”,它将字母“det”设置为直立(不是斜体)文本模式。如果你发现你真的希望将行列式排版为det(A)-- 矩阵是争论命令\det——或者作为|A|默认值的替代det A,您可以重新定义\det宏,如下所示:

    \let\origdet\det
    %% You should comment out one of the two next renewcommands
    \renewcommand{\det}[1]{\origdet\mathopen{}\left(#1\right)}   % to get "det(A)"
    \renewcommand{\det}[1]{\left\lvert#1\right\rvert} % to get "|A|"
    
  • 最后,我强烈建议您将所有宏收集到一个所谓的 LaTeX 样式文件(例如,mymacros.sty)中,并将此文件存储在 LOCALTEXMF 树中的某个位置。这样,您可以使用命令 从文档中加载样式文件\usepackage{mymacros},并且始终可以轻松访问宏。而且,如果您想重新定义某些宏,只需执行一次即可。

    您可能想要对宏进行的另一项更改是(如果您从一开始就没有这样做的话)添加大量注释,说明它们应该实现什么。(当然,提供大量注释在任何地方都被认为是一种良好的编程习惯,而不仅仅是在 LaTeX 使用者中。)

TeXing 快乐!

答案2

我发现用 LaTeX 编写数学代码非常自然。话虽如此,部分原因是我定义了宏来加快速度。由于无法用以下宏表达自己,

  • \x生产\times( × )和\ox生产\otimes( ⊗ )
  • \C生产\mathbb C( ℂ ) 和\Z生产\mathbb Z( ℤ )
  • M\trans生产M^\top( M  ) 和M\herm生产M^\dagger( M  )
  • \ens{1,2,3}生成\left\{ 1, 2, 3 \right\}({1,2,3})
  • \norm{A}生产\left\| A \right\|(|| A ||)
  • \ket{x}生产\left| x \right\rangle( |X⟩)

以及类似的,我会花更长的时间用 LaTeX 来表达自己的数学思想。然而,定义这样的宏会使在单个文件上进行协作变得更加困难,除非你和你的合著者同意使用同一组宏。

答案3

vim 的 vim-latex 包和 emacs 的 auctex 有`a扩展为\alpha`*扩展为\times等快捷键。这些快捷键大大加快了数学排版速度。使用 luatex 引擎(lualatex 或 context)时,我将这些快捷键更改为`a生成α等等。这使得以后编辑数学表达式变得更加容易。

答案4

我找到了一种在 Windows 操作系统下的任何文本编辑器(包括 math.stackexchange 网站)中以极快的速度输入 LaTeX 的方法(不幸的是,我没有找到在 Linux 发行版中执行相同操作的方法)。它依赖于名为自动热键:这是一个软件,它可以让您编写强大的自定义脚本来简化重复操作。

我所做的只是定义一个列表热字符串:热字符串是一种类型化的字符串,它会被另一个自定义字符串立即替换,基本上热字符串就像

::str1::str2

这意味着您键入后该字符串str1将立即被替换str2,因此您可以将任何 TeX 命令或宏的键入缩短为仅两三笔。

举个例子那里是我用来输入 LaTeX 的实际脚本(它经过精心设计,可以极大地增强 LaTeX 的输入能力,但它设计用于西班牙语键盘发行版,但是通过阅读脚本,您可以轻松地根据自己的喜好进行调整)。

更新:现在我正在使用埃斯潘索而不是 autohotkey。它可以在 mac、linux 和 windows 系统上使用(目前我只使用 linux 发行版)。

相关内容