Как мне санировать ввод LaTeX? - PullRequest
10 голосов
/ 13 апреля 2010

Я хотел бы взять пользовательский ввод (иногда это будут большие абзацы) и сгенерировать документ LaTeX. Я рассматриваю пару простых регулярных выражений, которые заменяют все экземпляры \ на \textbackslash и все экземпляры { или } на \} или \{.

Я сомневаюсь, что этого достаточно. Что еще мне нужно сделать? Примечание. Если для этого создана специальная библиотека, я использую python.

Для пояснения, я не хочу, чтобы что-либо анализировалось как синтаксис LaTeX: $a$ следует заменить на \$a\$.

1 Ответ

14 голосов
/ 13 апреля 2010

Если вы вводите простой текст, и вы находитесь в обычном режиме ввода кода, вы должны сделать следующие замены:

  • \\textbackslash{} (обратите внимание на пустую группу!)
  • {\{
  • }\}
  • $\$
  • &\&
  • #\#
  • ^\textasciicircum{} (требуется пакет textcomp)
  • _\_
  • ~\textasciitilde{}
  • %\%

Кроме того, следующие замены полезны, по крайней мере, при использовании кодировки OT1 (и безвредны в любом случае):

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

И эти три отключают фигурные кавычки:

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