2012-12-23 91 views
5

我在編寫一個python腳本來解析Wordpress Export XML(wp xml)的內容以生成LaTex文檔。到目前爲止,wp xml是通過lxml.etree解析的,代碼生成一個新的xml樹,由texml處理,而後者又生成tex文件。將HTML img標籤轉換爲帶有LaTeX標題的圖形

目前我提取每個帖子以及某些元數據(標題,出版日期,標籤,內容)。元數據沒有問題,但內容部分有點問題。在wp xml中,內容作爲CDATA結構包含在純HTML/Wordpress標記中。爲了將其轉換成乳膠,我選擇pandoc來解析內容。 TeXml支持內聯的LaTeX,因此內容將作爲普通的LaTeX添加到樹中。

我決定,因爲它已經轉換爲使用pandoc在這種情況下,大部分的HTML標籤的很好(astrongem ...),我唯一的問題是它如何與圖片交易。

我用一個子進程與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標籤轉換成一個簡單的內聯圖像,丟棄任何標題或ALT文本。

\href{http://link\_to\_source\_image.jpg}{\includegraphics{http://link_to_scaled_down_version.jpg}} 

我不期而遇的來源,它看起來像img僅作爲內聯元素處理。 (pandoc parsing function)。我不知道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中被嵌入在有標題的乳膠圖形環境中?

回答

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} 

這可能對你有幫助。