有没有像Markdown一样简单/清晰的语法可以编译成LaTeX?

7

我喜欢LaTeX。一开始就让我们明确这一点。

唯一希望的是有一个更清晰的语法,可以编译成LaTeX,就像Markdown可以用于HTML一样。因为我所做的大多数简单文档创建(比如上课笔记)如果我只需要输入1/2而不是\frac{1}{2},它会自动编译成漂亮的分数,那么速度和效率都会提高。我知道并使用AucTeX,它可以加快打字速度,但总体上仍然不太清晰,容易出现语法错误。

如果存在这样的更简单的语法,可以编译成LaTeX,请在下面的答案中告诉我。如果没有什么令人满意的东西,我很愿意开始一个开源项目,以达到这个目标,但是我想先了解现有的替代方案。


LaTeX 就是 一个更简单的TeX... 这里的基本问题是能够做任何事情。以你选择的分数为例:使其工作起来,将使在标准文本模式和字体下(也许是在输入日期的上下文中)想要'1'后跟'/'再跟'2'变得更加困难... 因此问题变成了“哪些用例足够特殊,以至于它们成为默认值,而牺牲其他所有用例?”另请注意,Markdown 无法做一些事情——这就是能够轻松完成其他事情的代价。 - dmckee --- ex-moderator kitten
@dmckee:在1/2的例子中,我希望它只在数学模式下将1/2转换为分数。这有道理吧? - Chetan
@dmckee:但是,你说的话很有道理。我只是在想,使用LaTeX时,许多常见的操作比其他操作更常见,因此在你想要用LaTeX进行快速记笔记或简单文档时,使用简单语法是有意义的。如果您想创建更复杂的文档并利用其更为晦涩的功能,则可以使用完整的语法。例如,在上课时记笔记时,我很想使用更短的语法。 - Chetan
在数学模式下将“/”排版为分数可能是有意义的,但有时您希望水平排版分数以便在文本块中使用它们。这可能是一个好例子,但当您尝试这样做时,您会面临一个巨大的问题,即如何优先考虑使用情况。它可能可以完成,但可能不容易,并且肯定不会普遍适用。 - dmckee --- ex-moderator kitten
@dmckee:你说得对。我的想法是默认选择更简单的用例,并在课堂上快速记录笔记后拥有一个功能性的文档。然后,如果您想将一些分数改为行内分数,可以直接编辑LaTeX代码以满足这个需求。这种更简单的语法非常适合快速生成具有基本设置的文档,当您有更多时间时可以进行更精细的调整。 - Chetan
7个回答

3

有一个 Markdown 到 LaTeX 脚本 可以用于 Python Markdown 实现。还有一个 扩展程序 叫做 mdx_math,允许内联 LaTeX 数学公式。Haskell Markdown 转换器 Pandoc 可以具有内联 LaTeX 数学公式并可以导出到 LaTeX。可能还有其他 Markdown 家族 的工具。但是,据我所知,这些工具都没有提供用于数学计算的替代语法。

维基百科列出了几种数学标记语言mathematical markup languages。虽然它是用JavaScript编写的,但你可能会对ASCIIMathML感兴趣。

你可能需要自己编写一些内容,但一个Markdown扩展程序可以查找使用干净语法(如ASCIIMathML)的块,这将很不错。


太好了,ASCIIMathML脚本看起来非常类似于我想要的。如果将其实现为转换为LaTeX,并添加其他部分和格式设置到简单语法中,那就正是我所需要的。 - Chetan
1
我认为最好的方法是扩展Markdown,使得像~1/(a+b)~这样的块被视为数学公式,并使用ASCIIMathML进行转换。 - David Johnstone
1
或者您可以修改Markdown,以便```块被视为数学,而不是行内代码。 - David Johnstone

2
Multimarkdown使用双角括号中的ASCIIMathML语法:

Multimarkdown

<<x/2>>  

2
如果你只考虑最简单的情况,那么你将会遇到麻烦。 \frac{1}{2} 太简单了。
对于以下每个简单语法,您会使用什么: \frac{1}{x + 1} \frac{1}{x} + 1 \frac{x^2}{x + 1} x^\frac{2}{x + 1} \frac{x}{{x + 1}^2} \frac{x}{x + 1}^2 如果您的第一次尝试不包含几个重复项(冲突),我将非常惊讶。

1
仅凭直觉,这些示例看起来是这样的:1/(x + 1)1/x + 1(x^2)/(x + 1)x^(2/(x+1))x/((x+1)^2)(x/(x+1))^2 - Chetan
而我的简单语法会自动将括号解析为分数,并在需要时添加括号(\left(\right)),以使方程更清晰明了。 - Chetan
1
但是如果你不想要括号怎么办?或者你想要括号怎么办?如果自动化解决这个问题很容易,那你认为 Knuth 会做吗? - hadley
@hadley:嗯,如果你想一想,你只需要在逻辑上将括号用于对它们进行操作的逻辑分组,比如 sin 或指数。所以它会寻找这种情况并在那里放置括号。这种方法可以快速生成函数方程,如果您想仅出于美观或个人原因添加或删除括号,稍后可以去修改 LaTeX 源代码。重要的是简单的语法应该是功能性和可读性的。 - Chetan

1
你应该真正了解pandoc,它在Markdown和LaTeX之间有出色的集成。好处是你可以直接插入LaTeX来处理Markdown过于简单的部分。

0

reStructuredText 可以编译成 LaTeX(语言本身比 TeX 简单得多,但仍使用 TeX 语法公式),请参阅 用 Docutils 生成 LaTeX 文章。reStructuredText 还有各种扩展,如 Sphinx

您还可以看一下 MathJax,它可以读取任何格式的数学公式(包括 ASCIIMath),并具有显示数学公式为 TeX 的菜单选项。


0

我不知道还有什么比LaTeX更简单的语法了。

然而,有TeXML这个工具,它是一个XML-to-TeX/LaTeX转换器。一开始可能听起来很奇怪,但是通过将自定义语法转换为XML,然后调用TeXML,可以使制作自定义语法变得更加容易。TeX语法很棘手:有意义的空行、TeX特殊字符,通常也缺乏Unicode…… TeXML使处理所有这些变得更加容易。


0

我知道你在寻找更简单的代码而不是一个新的编辑器,你说你使用AucTeX(我不使用所以我不知道这是否有帮助),但是TeXlipse为Eclipse提供了一些很好的编辑功能,可以加快输入速度,包括添加结束大括号}和结束命令\end{env},并允许通过制表符跳出大括号。只是一个想法。


是的,AucTeX也可以做类似的事情。但我对那个不太满意 :) - Chetan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接