2012-12-23 33 views
5

Tôi đang viết một tập lệnh python để phân tích nội dung của Wordpress Export XML (wp xml) để tạo một tài liệu LaTex. Cho đến nay, xml wp được phân tích cú pháp thông qua lxml.etree và mã tạo ra một cây xml mới sẽ được xử lý bởi texml, do đó tạo tệp tex.Chuyển đổi các thẻ img HTML thành các hình có chú thích trong LaTeX

Hiện tại tôi trích xuất từng bài đăng cùng với siêu dữ liệu nhất định (tiêu đề, ngày xuất bản, thẻ, nội dung). Siêu dữ liệu không có vấn đề gì, nhưng phần nội dung có chút rắc rối. Bên trong wp xml, nội dung được bao gồm dưới dạng cấu trúc CDATA trong HTML/Wordpress Markup thuần túy. Để chuyển đổi nó thành latex, tôi chọn pandoc để phân tích nội dung. TeXml hỗ trợ LaTeX nội tuyến, vì vậy nội dung được thêm vào như LaTeX đơn giản vào trong cây.

tôi quyết định sử dụng pandoc trong trường hợp này vì nó đã chuyển đổi hầu hết các thẻ html độc đáo (a, strong, em ...), vấn đề duy nhất tôi có là cách nó giao dịch với hình ảnh.

tôi sử dụng một tiến trình con để giao tiếp với 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] 

một bài mẫu có thể trông như thế này

<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. 

tôi cần hình ảnh với chú thích nhúng như con số ví dụ

\begin{figure} 
\includegraphics{link_to_image.jpg} 
\label{fig:some_label} 
\caption{Some alt text} 
\end{figure} 

pandoc dường như để chuyển đổi html img thẻ thành một hình ảnh inlined đơn giản, loại bỏ bất kỳ tiêu đề hoặc alt văn bản.

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

Tôi đã xem qua nguồn và có vẻ như img chỉ được coi là phần tử nội tuyến. (pandoc parsing function). Tôi không biết Haskell vì vậy đây là khoảng cách tôi nhận được.

Nếu bạn chuyển đổi html vào markdown tuy nhiên, nó giữ alt và tiêu đề và kết quả cũng tương tự như

![Some alt text](http://link_to_scaled_down_version.jpg "Title_text") 

Với markdown bạn có thể đã inlined hình ảnh hoặc con số trong kết quả các tài liệu latex. Nếu bạn chuyển đổi markdown này vào mủ kết quả là

\begin{figure}[htbp] 
\centering 
\includegraphics{http://link_to_scaled_down_version.jpg} 
\caption{Some alt text} 
\end{figure} 

pandoc Đầu tiên dường như là một giải pháp đơn giản để phân tích nội dung, nhưng tôi là một chút khó khăn như pandoc cũng không hỗ trợ mủ nội tuyến trong html vì vậy tôi có thể đầu tiên xử lý tất cả các hình ảnh và phần còn lại thông qua pandoc.

Các bạn có ý tưởng nào về cách (tốt hơn) xử lý img thẻ trong html để được nhúng trong môi trường hình trong mủ có chú thích không?

Trả lời

1

Pandoc xử lý các đoạn có chứa chỉ một hình ảnh đặc biệt, làm hình ảnh có chú thích. Chúng sẽ được chuyển thành các số LaTeX với chú thích. Do đó:

% 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} 

Điều này có thể giúp bạn.

Các vấn đề liên quan