reStructuredText単純なテーブルの列コンテンツを右揃えするにはどうすればよいですか?

alignment python python-sphinx restructuredtext tabular
reStructuredText単純なテーブルの列コンテンツを右揃えするにはどうすればよいですか?

私はhttp://sphinx.pocoo.org/[Sphinx]を使用して私のプロジェクトのドキュメントを編集しており、マークアップ言語としてhttp://docutils.sourceforge.net/rst.html[reStructuredText]を使用しています。

simple table(_grid table_とは対照的に)があり、右端の列レポートに右揃えしたい数値が含まれていますが、それを実現する方法が見つかりませんでした。

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

これで問題を解決できる場合は、_grid table_に切り替えていただければ幸いです。

  24  3


ベストアンサー

悲しいことに、私は最初にその能力を提供するとは思わない…​ テーブルのスタイル設定オプションはかなり制限されています。 ただし、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テーマでも動作するはずです。

16


ReSTは実際にセルコンテンツの配置をサポートしていないようですが、実際にはセル内でhttp://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#line-blocks[line-blocks]を使用して空白の保存を強制して、セルのコンテンツを効果的に埋め込みます。

unicode-whitespace文字の一部を使用する必要があります(例: U + 2001-EM QUAD)そして、それらの前に通常のスペース文字(` U + 0020`)があります。 `U + 0020U + 2001Your String`は、ReSTパーサーが不正な形式のテーブルや終了していない置換参照などについて文句を言うのを止めます。

+--------+---------+
| String | Num     |
+========+=========+
| foo    ||   12.00|   # second cell's content is actually |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以外のドキュメントを生成するときに整列が残るかどうかはわかりません。

5


私のアプローチは、_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レベルで実際に機能する回避策はありません。

2


タイトルとURLをコピーしました