如何清理LaTeX输入?
我想要让用户输入一些内容(有时候可能是很长的段落),然后生成一个LaTeX文档。我在考虑用几个简单的规则来处理这些输入,比如把所有的\
替换成\textbackslash
,把所有的{
和}
替换成\}
和\{
。
我觉得这样做可能不够全面。我还需要做些什么呢?注意:如果有专门的库可以处理这个,我是用python的。
为了更清楚,我不希望任何内容被当作LaTeX语法来解析:比如$a$
应该被替换成\$a\$
。
1 个回答
16
如果你的输入是普通文本,并且你处于正常的猫码模式下,你需要做以下替换:
\
→\textbackslash{}
(注意这里有个空的组!){
→\{
}
→\}
$
→\$
&
→\&
#
→\#
^
→\textasciicircum{}
(需要用到textcomp
这个包)_
→\_
~
→\textasciitilde{}
%
→\%
另外,以下替换在使用OT1编码时很有用(在任何情况下都不会有坏处):
<
→\textless{}
>
→\textgreater{}
|
→\textbar{}
这三种替换可以禁用弯引号:
"
→\textquotedbl{}
'
→\textquotesingle{}
`
→\textasciigrave{}