2014-01-09 44 views
5

考慮這個表,其中pyeval是計算表達式,並用它的值替換它的宏(所以可避免文檔中硬編碼的值):我如何讓獅身人面像表適合寬度?

======================= =========================================== 
Subsytem    Default path 
======================= =========================================== 
:pyeval:`constants.FOO` :pyeval:`pathutils.DEFAULT_FOO_STORAGE_DIR` 
:pyeval:`constants.BAR` :pyeval:`pathutils.DEFAULT_BAR_STORAGE_DIR` 
:pyeval:`constants.BAZ` :pyeval:`pathutils.DEFAULT_BAZ_STORAGE_DIR` 
======================= =========================================== 

這使得與此HTML:

<table border="1" class="docutils"> 
    <colgroup> 
    <col width="40%"> 
    <col width="60%"> 
    </colgroup> 
    <thead valign="bottom"> 
    <tr class="row-odd"> 
     <th class="head">Subsystem</th> 
     <th class="head">Default storage path</th> 
    </tr> 
    </thead> 
    <tbody valign="top"> 
    <tr class="row-even"> 
     <td><tt class="docutils literal"><span class="pre">foo</span></tt></td> 
     <td><tt class="docutils literal"><span class="pre">/srv/badp/foo-path/</span></tt></td> 
    </tr> 
    <tr class="row-odd"> 
     <td><tt class="docutils literal"><span class="pre">bar</span></tt></td> 
     <td><tt class="docutils literal"><span class="pre">/srv/badp/bar-path/</span></tt></td> 
    </tr> 
    <tr class="row-even"><td><tt class="docutils literal"> 
     <span class="pre">baz</span></tt></td> 
     <td><tt class="docutils literal"><span class="pre">/var/run/badp/baz-path/</span></tt></td> 
    </tr> 
    </tbody> 
</table> 

由於宏,我必須給Subsytem列的寬度的數量僅略小於列Default path獲得,但其列的內容要短得多。由於斯芬克斯嘗試是「有用的」,它會嘗試傳送源文件到HTML頁面中寬度的比率(注意colgroup標籤),其結果是相當不均勻:

enter image description here

注意,鉻(就像Firefox一樣)在連字點處「有用地」斷開,因爲這是一條路徑,所以我不會將連字符更改爲不打破連字符;人們很可能會複製粘貼這些值。

但是,如果我刪除了colgroup元素,我就得到了我想要的表格。

enter image description here

我怎麼能告訴獅身人面像取悅與我的桌子少聰明?

+1

一個相關的bug報告(狀態設置爲不會修復):https://bitbucket.org/birkenfeld /獅身人面像/問題/ 1298。 – mzjn

回答

4

我也遇到過這個問題。讀取docutils源文件時,似乎使用網格表的分隔線中的列的破折號數和這裏使用的簡單表中的列的最長列條目中的字符數來計算colgroup寬度。

嘗試編寫自定義指令來生成沒有colgroup的表時,遇到了docutils中似乎存在的錯誤,因爲稍後處理生成的元素期望colgroup存在。

我使用的一種技術是使用別名來創建與其真實文本更接近的數據項。例如:

.. |FOO| replace:: :pyeval:`constants.FOO` 

這有助於但並不完美。

的實驗使用以下的CSS

colgroup { display: none; } 

完美製作的FireFox但在IE9藏在輸入表,以便清楚這不是一個可接受的解決方案要麼禁止colgroup元素。

1

什麼似乎工作(至少在Firefox)是重置col寬度:

table.docutils col { 
    width: auto; 
}