文本代码从 phpBB 到 LaTeX?

文本代码从 phpBB 到 LaTeX?

假设我有一个为phpBB论坛,与大胆的颜色强调文本代码,如下所示(请注意,其中有一些基本的 LaTeX 代码):

[size=150][b]Chapitre 4.  La cinématique du mouvement rectiligne (le long d'un seul axe)[/b][/size]

Toutes les définitions et formules suivantes doivent être connues et comprises en détails par les élèves du cours de mise à niveau.

[b][color=#BF0000]Définition :[/color][/b] La [b][u]cinématique[/u][/b] est la partie de la physique qui cherche à [u]décrire le mouvement des corps[/u], sans chercher à expliquer le mouvement.  La cinématique fait appel à la [u]position instantanée[/u] [latex]x(t)[/latex] (position à l'instant [latex]t[/latex]), la [u]vitesse moyenne[/u] [latex]v_{x \, \text{moy}}[/latex] (moyenne entre deux instants), la [u]vitesse instantanée[/u] [latex]v_x(t)[/latex] (vitesse exacte à l'instant [latex]t[/latex]), l'[u]accélération instantanée[/u] [latex]a_x(t)[/latex] et l'[u]accélération moyenne[/u] [latex]a_{x \, \text{moy}}[/latex].

是否可以将代码直接复制并粘贴到 LaTeX 文档中,让 LaTeX 自动识别各种 [/]...[] 并将它们编译为普通的粗体、颜色和下划线命令?如果告诉 LaTeX 如何自动执行此操作太麻烦,我唯一的选择就是进行各种搜索/替换,这很容易,但对于许多phpBB代码...

答案1

使用 LuaLaTeX 时,你可以使用,尽管这有点复杂(我不知道 phpBB 标记语言,但我猜你知道,所以……)。我pgfkeys也使用过,因为它可以轻松处理成对key=value。这是一个概念证明

%!TEX program = lualatex
\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{luacode}
%Underlines
\usepackage[soul]{lua-ul}
%For HTML color support
\usepackage{xcolor}
%For \text{}
\usepackage{amsmath}
\usepackage{pgfkeys}
%If you need more options, you can add them to pgfkeys
%Sorry, the font size (in points) was too large,
%So I scaled it
\pgfkeys{/phpbb/size/.code=\fontsize{\directlua{tex.sprint(#1/6)}pt}{\directlua{tex.sprint(#1/5)}pt}}
\pgfkeys{/phpbb/color/.code=\color[HTML]{#1}}
\def\phpbb[#1]{\pgfkeys{/phpbb/#1}}
\begin{luacode*}
function phpbb(str)
    str = string.gsub(str, "%[color=#", "{\\phpbb[color=")
    str = string.gsub(str, "%[latex%]", "$")
    str = string.gsub(str, "%[/latex%]", "$")
    str = string.gsub(str, "%[b%]", "\\textbf{")
    str = string.gsub(str, "%[/b%]", "}")
    str = string.gsub(str, "%[u%]", "\\ul{")
    str = string.gsub(str, "%[/u%]", "}")
    str = string.gsub(str, "%[size=", "{\\phpbb[size=")
    str = string.gsub(str, "%[/size%]", "}")
    str = string.gsub(str, "%[/color%]", "}")
    return str
end
\end{luacode*}
\newcommand{\startphpbb}{\directlua{luatexbase.add_to_callback("process_input_buffer", phpbb , "phpbb" )}}
\newcommand{\stopphpbb}{\directlua{luatexbase.remove_from_callback("process_input_buffer", "phpbb" )}}
\begin{document}
\startphpbb
[size=150][b]Chapitre 4.  La cinématique du mouvement rectiligne (le long d'un seul axe)[/b][/size]

Toutes les définitions et formules suivantes doivent être connues et comprises en détails par les élèves du cours de mise à niveau.

[b][color=#BF0000]Définition :[/color][/b] La [b][u]cinématique[/u][/b] est la partie de la physique qui cherche à [u]décrire le mouvement des corps[/u], sans chercher à expliquer le mouvement.  La cinématique fait appel à la [u]position instantanée[/u] [latex]x(t)[/latex] (position à l'instant [latex]t[/latex]), la [u]vitesse moyenne[/u] [latex]v_{x \, \text{moy}}[/latex] (moyenne entre deux instants), la [u]vitesse instantanée[/u] [latex]v_x(t)[/latex] (vitesse exacte à l'instant [latex]t[/latex]), l'[u]accélération instantanée[/u] [latex]a_x(t)[/latex] et l'[u]accélération moyenne[/u] [latex]a_{x \, \text{moy}}[/latex].
\stopphpbb
\end{document}

在此处输入图片描述

相关内容