10

いくつかの .rst ファイルがあり、標準の sphinx コンバーターを使用してそれらを .tex ファイルに変換します。

一部の .rst には、次のような特別な幅のテーブルがあります。

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

結果の .tex には、常に次のようなテーブルが含まれます。

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

そのため、列幅が失われます。

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. 

しかし、それは動作しません..多分私は悪いコンバータを使用しました? おすすめのコンバーターは?

4

5 に答える 5

13

実際にコマンド

.. tabularcolumns:: |p{4.5cm}|p{8.5cm}| 

.. list-table:: の直前に必要です

https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-tabularcolumns

于 2010-05-26T19:09:27.787 に答える
1

試す:

:widths: 50, 50

コンマ区切りで。

出力は、最初にテーブルがどのように記述されているかによっても異なります。

箇条書きリストからテーブルを作成するのではなく、標準の rst テーブル構文を使用していると想定しました (可能な場合)。さらにヘルプが必要な場合は、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|}
于 2010-04-07T20:50:22.293 に答える
0

docutils rst2latex ライターにはテーブルに関するいくつかの問題があります: http://docutils.sourceforge.net/docs/dev/todo.html#tables、おそらくあなたの問題はそれに関連していますか? Sphinx ライターは rst2latex に基づいているため、同じ問題が発生する可能性があると思います。

于 2010-04-10T08:49:41.453 に答える
0

膨大なドキュメントがあるので、ラテックス生成を修正しようとしました。また、最初のファイルでの Latex 表記は、一貫性がなく、編集者が扱いにくいマークアップ言語を部分的に学習する必要があるため、不利だと考えています。

LaTeXTranslator.depart_table を自分のバージョンに置き換えました。元の department_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もSphinxも流暢ではないので、自己責任で使用してください。アイデアが得られるか、アドバイスをいただければ幸いです。

Python < 3.0 を使用していて、係数 0.95 を完全に削除したい場合は、整数の 1 つを float にキャストするか、__ future __ から除算をインポートすることを忘れないでください。

于 2013-11-12T12:11:35.383 に答える