Конвертер Markdown -> Latex C++ regex
Пишу C++ программу для конвертации Markdown в Latex. У меня возникла проблема при конвертировании блоков кода, в Latex я хотел использовать пакет listings.
В MD код выделяется таким образом:

Вот собственно сам код:
string replace_code_area(string MD) {
regex line("```(.*?)\n([.\n]*?)```");
string tex = regex_replace(MD, line, "\\lstset{language=$1}\n\\begin{lstlisting}$2\\end{lstlisting}");
if (tex != MD) {
::code_area_found = true;
}
return tex;
}
При запуске с такими исходными данными:
# Problem in regex
__First Bold__, __Second Bold__
_First Italic_, _Second Italic_
***Ha Ha*** *I like***This language**
---
\\```
a = 5
b = 7
a, b = b, a
\\```
``Not code``
Выдаёт вот такой результат
\documentclass{article}
\begin{document}
\Huge Problem in regex
\textbf{First Bold}, \textbf{Second Bold}
\textit{First Italic}, \textit{Second Italic}
\textit{\textbf{Ha Ha}} \textit{I like}\textbf{This language}
\noindent\rule{\textwidth}{1pt}
\\```Python
a = 5
b = 7
a, b = b, a
\\```
``Not code``
\end{document}
Т.е блок кода не изменяется в принципе. Функция replace_code_area вызывается гарантированно, я добавил cout после объявления регулярного выражения, и оно действительно выводило текст в консоль.
В коде *3 (3 знака) заменено на //``` что бы сайт не воспринимал это как часть блока кода.