如何清理LaTeX输入?

11 投票
1 回答
2220 浏览
提问于 2025-04-15 21:32

我想要让用户输入一些内容(有时候可能是很长的段落),然后生成一个LaTeX文档。我在考虑用几个简单的规则来处理这些输入,比如把所有的\替换成\textbackslash,把所有的{}替换成\}\{

我觉得这样做可能不够全面。我还需要做些什么呢?注意:如果有专门的库可以处理这个,我是用python的。

为了更清楚,我不希望任何内容被当作LaTeX语法来解析:比如$a$应该被替换成\$a\$

1 个回答

16

如果你的输入是普通文本,并且你处于正常的猫码模式下,你需要做以下替换:

  • \\textbackslash{}(注意这里有个空的组!)
  • {\{
  • }\}
  • $\$
  • &\&
  • #\#
  • ^\textasciicircum{}(需要用到textcomp这个包)
  • _\_
  • ~\textasciitilde{}
  • %\%

另外,以下替换在使用OT1编码时很有用(在任何情况下都不会有坏处):

  • <\textless{}
  • >\textgreater{}
  • |\textbar{}

这三种替换可以禁用弯引号:

  • "\textquotedbl{}
  • '\textquotesingle{}
  • `\textasciigrave{}

撰写回答