Преобразование HTML-тегов img в цифры с подписью в LaTeX

Я пишу сценарий 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 для встраивания в среду рисунка в латексе с подписями?


person nitnatsnoc    schedule 23.12.2012    source источник


Ответы (1)


Pandoc специально обрабатывает абзацы, содержащие только изображение, как изображения с подписями. Они будут превращены в фигурки LaTeX с подписями. Таким образом:

% pandoc -f html -t latex
<p><img src="myimg.jpg" alt="my text" title="my title"/></p>
^D
\begin{figure}[htbp]
\centering
\includegraphics{myimg.jpg}
\caption{my text}
\end{figure}

Это может вам помочь.

person John MacFarlane    schedule 31.12.2012
comment
Ага, это главное! Я тестировал его, включая тег ‹a› в абзаце, но мне не приходило в голову просто попробовать это с изображением ... Большое спасибо! - person nitnatsnoc; 05.01.2013