LaTeX 方言可以进行适度改变吗?

LaTeX 方言可以进行适度改变吗?

我想创建自己的 LaTeX 衍生标记语言。(我以前问过类似的问题,但这个问题比较有限。)建议会很有用。

第一个问题:

我相信在开始文档和结束文档(我称之为“主文档”)之间有三类主要宏:

  1. 标价(例如,\textit\begin{quote}

  2. 字符(例如\kappa, \Bbb{A}

  3. 编程(例如\newcommand,,,\let\newtheorem

这种分类是否合理,或者我是否省略了一类合乎逻辑的宏?

我相信,如果我从主文档中删除 #3 并将其禁止到序言中,那么可以在 LaTeX 中排版的所有内容仍然可以排版。这意味着,一旦读取了我的序言,允许的宏名称集将被修复,并且我的文档中只有真正的标记。原则上,另一个程序可以解释标记(并以不同的方式解释它),而不必本身就是 TeX。

第二个问题:

有没有环境的捷径{ }?这是当它单独使用时,而不是当它用来描述宏的参数时。我的意思是hello {\it there}与 相对hello \textit{there}。我想知道我是否可以在我的文档中“禁止”括号的普通环境使用,而是依靠样式。在极少数需要的情况下,我会说\begin{env} ... \end{env}。但我还没有遇到过这种情况。

第三个问题:

是否可以在主文档中更改 catcode,但是一旦 LaTeX 扩展(输入 = 运行)宏,标准 catcode 定义就会再次保留?(即,这样我仍然可以运行包中定义的所有宏,而无需进行更改)。

如果是这样的话,那么我可以定义自己的 LaTeX 方言。我的文档将在序言中具有标准 LaTeX 的功能,然后

\usepackage[version=2]{newdocument}
\begin{newdocument}
   modified catcodes, outside markup
\end{newdocument}

其中新文档将是我自己的版本。至于我,我想要

  • |成为表格中的单元格分隔符

  • &成为实体运算符,就像在 html 中一样,即κ&hashmark;

  • \\用类似的东西代替\nl

  • $被释放(即不再是 catcode)。我的用户必须使用它\m{...}来表示数学表达式。

  • %被释放(即不再是特殊的 catcode)。15% 现在是应该的。

不太重要:

  • #成为备注操作员。无需编程,否则不再需要

  • \#被禁止交换&hashmark;

现在,使用 Lua 或 Perl 等可以轻松处理输入文本,但我希望文档保持可移植性,因此这必须是用 TeX 编写的标准 LaTeX 包。(如果这很容易,我会想雇人来实现它。如果这很难,那就不行。)

/iaw

答案1

问题 3 的答案是肯定的。例如,您可以看到 @:其在文档中的 catcode 是其他的,但 \section 可以毫无问题地调用内部的 \@startsection。

您还可以轻松地测试它:

\documentclass{article}

%normal catcodes:
\newcommand\test{$a_b$}

\begin{document}

\catcode`\$=11
\catcode`_=11
%changed catcodes:
$a_b$

\test
\end{document}

相关内容