Я пишу сценарий python для анализа содержимого Wordpress Export XML (wp xml) для создания документа LaTex. Пока wp xml анализируется через lxml.etree
, и код генерирует новое дерево xml для обработки texml, которое в свою очередь генерирует файл tex.
В настоящее время я извлекаю каждое сообщение вместе с определенными метаданными (заголовок, дата публикации, теги, контент). С метаданными проблем не возникает, но с содержанием немного проблематично. Внутри wp xml содержимое включено в виде структуры CDATA в простой разметке HTML / Wordpress. Чтобы преобразовать его в латекс, я выбираю pandoc для анализа содержимого. TeXml поддерживает встроенный LaTeX, поэтому контент добавляется в дерево как простой LaTeX.
Я решил использовать pandoc в этом случае, поскольку он уже прекрасно конвертирует большинство тегов html (a
, strong
, _4 _...), единственная проблема, с которой я столкнулся, - это то, как он работает с изображениями.
Я использую подпроцесс для взаимодействия с pandoc:
args = ['pandoc', '-f', 'html', '-t', 'latex']
p = Popen(args, stdout=PIPE, stdin=PIPE, stderr=PIPE)
tex_result = p.communicate(input=(my_html_string).encode('utf-8'))[0]
образец сообщения может выглядеть так
<strong>Lorem ipsum dolor</strong> sit amet, consectetur adipiscing elit.
<a href="http://link_to_source_image.jpg"><img class="alignnone size-medium wp-image-id" title="Title_text" src="http://link_to_scaled_down_version.jpg" alt="Some alt text" width="262" height="300" /></a>
Nam nulla ante, vestibulum a euismod sed, accumsan at magna. Cras non augue risus, vitae gravida quam.
Мне нужны изображения с подписями в виде цифр, например
\begin{figure}
\includegraphics{link_to_image.jpg}
\label{fig:some_label}
\caption{Some alt text}
\end{figure}
Кажется, что pandoc конвертирует html img
теги в простое встроенное изображение, отбрасывая любой заголовок или альтернативный текст.
\href{http://link\_to\_source\_image.jpg}{\includegraphics{http://link_to_scaled_down_version.jpg}}
Я заглянул в исходный код, и похоже, что img
рассматривается только как встроенный элемент. (функция синтаксического анализа pandoc) . Я не знаю Haskell, так что вот как далеко я продвинулся.
Если вы конвертируете html в уценку, он сохранит alt и title, и результат будет похож на
![Some alt text](http://link_to_scaled_down_version.jpg "Title_text")
С помощью уценки вы можете иметь встроенные изображения или цифры в итоговом латексном документе. Если вы конвертируете эту уценку в латекс, результат будет
\begin{figure}[htbp]
\centering
\includegraphics{http://link_to_scaled_down_version.jpg}
\caption{Some alt text}
\end{figure}
Первый pandoc казался простым решением для анализа содержимого, но я немного застрял, поскольку pandoc также не поддерживает встроенный латекс в html, поэтому я мог сначала обработать все изображения, а остальное через pandoc.
У вас есть идеи, как (лучше) обрабатывать теги img
в html для встраивания в среду рисунка в латексе с подписями?