2010-04-07 75 views
9

我有一些.rst文件,我使用標準的獅身人面像轉換器將它們轉換爲.tex文件。rst轉換表格到LaTeX

在一些.rst我有一個特殊的寬度表:

\begin{tabulary}{\textwidth}{|L|L|} 

因此,列寬丟失:

.. list-table:: 
    :widths: 50 50 

產生的.tex總是包含表格等。

如何在將rst轉換爲latex時保留列寬?


我用逗號分隔符太,

.. list-table:: 
    :widths: 50 , 50 
    :header-rows: 1 

* - SETTING 
    - DESCRIPTION 
* - Enable 
    - Enables or disables internal tracing. 
* - Verbose 
    - Enables or disables extended internal tracing. 

,但它不工作..也許我用不好的轉換器?你推薦什麼轉換器?

回答

1

嘗試:

:widths: 50, 50 

用逗號分隔。

輸出還取決於你的表如何寫在第一。

我認爲你使用的是標準的第一個表語法,而不是根據項目符號列表創建表(儘可能)。如需更多幫助,請嘗試http://docutils.sourceforge.net/docs/ref/rst/directives.html#tables

而且,如果50, 50是列寬,你的乳膠的代碼應該是這樣的:

\begin{tabulary}{ 1\textwidth}{ | p{0.5} | p{0.5} | } 

和:

\begin{tabulary}{total width of table}{| column width| column width|} 
+0

我用逗號分隔符也 ..一覽表:: :寬度:50,50 :報頭行:1 * - 設置 - 說明 * - 使能 - 啓用或禁用內部跟蹤。 * - 詳細 - 啓用或禁用擴展的內部跟蹤。 但它不工作.. 可能是我使用壞轉換器?你推薦什麼轉換器? 謝謝 – ace 2010-04-08 11:03:08

+0

如果你還沒有使用docutils,我會嘗試。手冊中列出了幾種轉換器。我通常喜歡轉換器的pandoc,但我並沒有在第一時間做很多工作,所以我不確定轉換會有多好。 – Mica 2010-04-08 16:14:18

+0

-1因爲問題是關於獅身人面像和獅身人面像沒有與docutils語法在這種情況下工作,你必須使用'..tabularcolumns ::' – bmu 2012-04-08 22:20:56

0

我可以證實之前所需要的命令是:

.. list-table:: 
:widths: 10 40 50 

* - Module 
    - Link 
    - Description 

與rst2latex工程

\setlength{\DUtablewidth}{\linewidth} 
\begin{longtable*}[c]{|p{0.104\DUtablewidth}|p{0.375\DUtablewidth}|p{0.465\DUtablewidth}|} 
\hline 

Module 
& 
Link 
& 
Description 
\\ 
\hline 

但與獅身人面像,我得到什麼OP放。所以不是我會收集的第一個問題。

文檔說的「自動」寬度對於我來說也不是很實用,鏈接往往會流血。

0

由於我有一個巨大的文檔,我試圖修復膠乳一代。另外,我認爲第一個文件中的Latex符號是不利的,因爲它不一致,需要編輯部分學習一個敏感的標記語言。

我用我自己的版本替換了LaTeXTranslator.depart_table。我複製原depart_table並加入這個代碼(縮短):

def my_depart_table (self, node): 
    totalColwidth = 0 
    givenColwidth = [] 
    hasColwidth = False 

    for tgroup in node: 
     for tableColspec in tgroup: 
      try: 
       if tableColspec.has_key('colwidth'): 
        totalColwidth += tableColspec['colwidth']  
        givenColwidth.append(tableColspec['colwidth']) 
        hasColwidth = True 
      except: 
        print "colspec missing. \n" 
    # original code 

    if hasColwidth: 
     colspec = "" 
     for thisColwidth in givenColwidth: 
      colspec += ('>{\RaggedRight}p{%.3f\\linewidth}' % (0.95 * thisColwidth/totalColwidth))      
      #print "using widths: %.3f %s %s" % ((0.95 * thisColwidth/totalColwidth), thisColwidth, totalColwidth) 
      self.body.append('{' + colspec + '}\n') 

    # more original code 

LaTeXTranslator.depart_table = my_depart_table

林既不流利在Python也不斯芬克斯,所以在自己的風險。我希望你明白,甚至可以提供建議。

如果您使用Python < 3.0並且想要完全移除因子0.95,請記住要將其中一個整數從__ future __中移除或導入除法。