Sphinx を使用して私のプロジェクトのドキュメントを編集しています。次に、マークアップ言語として reStructuredText を使用しています。
私は単純なテーブル(グリッドテーブルとは対照的に)を持っています右端の列のレポートには、右揃えにしたい数値が含まれていますが、それを実現する方法が見つかりませんでした。
============ =====================
Event Score variation
============ =====================
Event 1 +100
Event 2 -25
Event 3 -400
============ =====================
問題を解決できるのであれば、グリッドテーブルに切り替えていただければ幸いです。
残念ながら、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テーマでも機能するはずです。
ReSTは実際にはセルのコンテンツの配置をサポートしていないように見えますが、実際にはセル内で line-blocks を使用して空白の保存を強制し、セルのコンテンツを効果的に埋めることができます。
nicode-whitespace 文字の一部を使用する必要があります(例: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出力の編集と生成の両方が必要になります。 rst2html.py
はこれをうまく処理しますが、sphinx
がこれをどのように処理するか、可能であれば、非HTMLドキュメントを生成するときに配置が維持されるかどうかはわかりません。
私のアプローチは、Docutilsによって生成されたTeXファイルのsed
のビットです。アイデアは、table
宣言をニーズに合ったものに置き換えることです。
Docutilsはそのようなものを生成します:
\begin{longtable*}[c]{p{0.086\DUtablewidth}p{0.290\DUtablewidth}}
2番目の列を右揃えにしたいとします。これを次のように置き換えることができます。
\begin{longtable*}[c]{lr}
ただし、セルの幅を制御する機能は失われます。ここで必要なのは、2 \newcolumntype
を宣言することです。1つは右揃え(x)用、もう1つは左揃え(y)用です。
\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のバージョンを使用しているため、すべてをスクリプトファイルに入れました。 )出荷されたものは、\n
での改行置換をサポートしていません(これは、Makefile
にいるときに最悪です)。
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-centre-aligned-content/