31

私は自分のプロジェクトのドキュメントをSphinxを使用して編集しています。これはreStructuredTextをマークアップ言語として使用します。

一番右の列レポートに右揃えにしたい数値が含まれている単純なテーブル( grid tableとは対照的に) がありますが、それを達成する方法が見つかりませんでした。

============  =====================
Event               Score variation
============  =====================
Event 1                        +100
Event 2                         -25
Event 3                        -400
============  =====================

これで問題が解決できるのであれば、喜んでグリッド テーブルに切り替えます。

4

5 に答える 5

20

悲しいことに、私は rst がその機能を提供しているとは思わない...テーブルのスタイリングオプションはかなり限られている. つまり、HTML にレンダリングする場合は、次のような CSS ルールを使用してカスタム スタイルシートを追加できます。

table.right-align-right-col td:last-child {
    text-align: right
}

次に、ディレクティブを追加します。

.. rst-class:: right-align-right-col

最初のファイルのテーブルのすぐ上。不格好ですが、うまくいくはずです。


update 2013-2-6:それ以来、私はこれを自分で達成する必要があり、より恒久的な解決策を考え出しました。cloud_sptheme.ext.table_styling Sphinx 拡張機能は、列の配置、列ごとの css クラス、およびその他の多数のテーブル スタイル設定を行うためのディレクティブを追加します。「クラウド」Sphinx テーマの一部としてパッケージ化されていますが、どの Sphinx テーマでも動作するはずです。

于 2011-09-08T16:26:50.763 に答える
7

ReSTは実際にはセルのコンテンツの配置をサポートしていないように見えますが、実際にはセル内のラインブロックを使用して空白の保持を強制し、セルのコンテンツを効果的に埋めることができます。

いくつかのユニコード空白文字(例U+2001 - EM QUAD)を使用し、それらの前に通常のスペース文字(U+0020)を付ける必要があります。つまりU+0020U+2001Your String、ReSTパーサーが不正な形式のテーブルや終了していない置換参照などについて文句を言うのを防ぎます。

+--------+---------+
| String | Num     |
+========+=========+
| foo    ||   12.00|   # second cell's content is actually |<U+0020><U+2001>12.00
+--------+---------+
| bar    ||    3.01|
+--------+---------+
| baz    ||    4.99|
+--------+---------+
| moo    ||   15.99|
+--------+---------+
| quux   ||   33.49|
+--------+---------+
| foo    ||   20.00|
+--------+---------+
| bar    ||  100.00|
+--------+---------+

上記のようなテーブルは少しぎこちなく見え始め、維持するのも面倒ですが、このアプローチで作業は完了します。また、言うまでもなく、UTF-8出力の編集と生成の両方を行う必要があります。これをうまく処理しますが、これをどのように処理するか、可能であれば、非HTMLドキュメントを生成するときに配置が維持されるかどうかはrst2html.pyわかりません。sphinx

于 2012-01-03T08:51:37.040 に答える
2

私のアプローチは、Docutilssedによって生成された TeX ファイルに少し当てはまります。アイデアは、宣言をニーズに合ったものに置き換えることです。table

Docutils はそのようなものを生成します:

\begin{longtable*}[c]{p{0.086\DUtablewidth}p{0.290\DUtablewidth}}

2 番目の列を右揃えにしたいとします。これを次のように置き換えます。

\begin{longtable*}[c]{lr}

ただし、セルの幅を制御する機能は失われます。ここで必要なのは\newcolumntype、右揃え ( x ) 用と左揃え ( y )用の 2 を宣言することです。

\newcolumntype{x}[1]{% 
>{\raggedleft\hspace{0pt}}p{#1}}% 
\newcolumntype{y}[1]{% 
>{\raggedright\hspace{0pt}}p{#1}}% 

そして、それらをテーブル宣言で使用します。

\begin{longtable*}[c]{y{7.5cm}x{2cm}}

\\改行\tabularnewlineも.

私はOSXを使用しており、出荷されたsedのバージョンは改行置換をサポートしていないため、すべてをスクリプトファイルに入れます\nMakefile.

結論

OSX/BSD の場合:

sed -E -f fix_table.sed < source.tex > destination.tex

fix_table.sed:

s/\\begin{longtable\*}.*/\\newcolumntype{x}[1]{% \
>{\\raggedleft\\hspace{0pt}}p{#1}}% \
\\newcolumntype{y}[1]{% \
>{\\raggedright\\hspace{0pt}}p{#1}}% \
\\begin{longtable*}[c]{y{7.5cm}x{2cm}}/
s/\\\\/\\tabularnewline/

これは少し厳しいですが、RestructuredText レベルで実際に機能する回避策はありません。

http://en.wikibooks.org/wiki/LaTeX/Tables

http://texblog.org/2008/05/07/fwd-equal-cell-width-right-and-center-aligned-content/

于 2012-02-19T21:49:56.843 に答える