我想创建自己的 LaTeX 衍生标记语言。(我以前问过类似的问题,但这个问题比较有限。)建议会很有用。
第一个问题:
我相信在开始文档和结束文档(我称之为“主文档”)之间有三类主要宏:
标价(例如,
\textit
,\begin{quote}
)字符(例如
\kappa
,\Bbb{A}
)编程(例如
\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}