关于 latex 中类似 markdown 的语法

关于 latex 中类似 markdown 的语法

我所说的类似 markdown 的语法,例如使用*...*or**...**代替\emph{...}or \(...\)or \begin{blabla}...\end{blabla}

似乎可以在 Latex 中使用这种“markdown”类型的语法:

\catcode`\*=\active
\def*#1*{\emph{#1}}

有许多主观有人可能会喜欢其中一种或另一种的原因。有人可能会认为*...*更具可读性,而其他人可能会认为\emph{...}更具可读性。有人可能会说 LaTex 语法的开头和结尾更清晰,而另一个人可能会说,如果你不明白 的开头和结尾,那你一定是瞎了眼*...*

我想了解是否有任何客观的为什么不在 LaTeX 中使用这些“类似 markdown”的命令?我认为 LaTeX 可能不是为处理那些没有明确开始和结束的命令而设计的,因此可能会导致错误?或者使用这种语法完全没问题吗?

另一个问题是,我能以某种方式在 LaTeX 中定义“...”吗?我试过:

\catcode`\`=\active
\def`#1`{\emph{#1}}

但这不起作用。

答案1

我建议你先写 markdown 语法,然后再预处理你的文本潘多克。或者,您可以使用文本编辑器(Emacs、Vim),您可以在其中重新定义键盘并使用快捷方式来编写 LaTeX 标记。

答案2

关于你的第二个问题,它确实有效:

\documentclass{article}
\begin{document}
\catcode`\`=\active
\def`#1`{\emph{#1}}
`abc`
\end{document}

活性物质

但这会产生后果:逐字翻译将不起作用,因为左勾不在已清理字符列表中。*也一样。 它们在逐字翻译环境中仍将保持活动状态。\nfss@catcodes不过,两者都已通过 清理。

并且,具体来说*,使其处于活动状态将会破坏所有star变体,例如\section*等等......

Babel 有一个使事物活跃起来的机制,它必须修补内核的许多命令,例如系统\label+\ref。然而,它没有注意到数学活跃 人物。

当然,可以做一些简单的事情(我曾在一份@约 120 页的文档中体验过这种情况),但无法确保全球兼容性。\scantokens如果使用包中的任何宏处于活动状态,肯定会感到惊讶@

相关内容