tutorial tabulate tabulan tablas realizan para notebook libreria leer hacer funciones español ejemplos datos como biblioteca python alignment python-sphinx restructuredtext tabular

tabulate - pandas python tutorial español pdf



¿Cómo alinear a la derecha el contenido de las columnas en tablas simples reStructuredText? (3)

Estoy editando la documentación de un proyecto mío utilizando Sphinx , que a su vez usa reStructuredText como lenguaje de marcado.

Tengo una tabla simple (a diferencia de la tabla de cuadrícula ) en la que la columna de más a la derecha contiene números que me gustaría alinear a la derecha, pero no pude encontrar la forma de lograrlo.

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

Me encantaría cambiar a una tabla de cuadrícula si esto me permitiera resolver el problema.


Lamentablemente, no creo que primero ofrezca esa capacidad ... las opciones de estilo de la mesa son bastante limitadas. Dicho esto, si está renderizando a HTML, podría agregar una hoja de estilo personalizada con una regla css como:

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

y luego agregar la directiva:

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

Justo encima de su mesa en el primer archivo. Es torpe, pero debería funcionar.

actualización 2013-2-6: Desde entonces he necesitado lograr esto y encontré una solución más permanente. La extensión Sphinx de cloud_sptheme.ext.table_styling agrega directivas para realizar alineación de columnas, clases de css por columna y varios trucos de estilo de tabla. A pesar de estar empaquetado como parte del tema "cloud" de Sphinx, debería funcionar con cualquier tema de Sphinx.


Mi enfoque es un poco de sed en el archivo TeX generado por Docutils . La idea es reemplazar la declaración de la table con algo que se ajuste a sus necesidades.

Docutils producen algo así:

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

Imagina que quieres alinear a la derecha la segunda columna. Es posible que desees reemplazar esto con:

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

Pero pierdes la capacidad de controlar el ancho de las celdas. Lo que necesitamos aquí es declarar 2 /newcolumntype , uno para la alineación a la derecha ( x ) y otro para la alineación a la izquierda ( y ):

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

Y úsalos en la declaración de la mesa:

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

La // nueva línea también debe reemplazarse con una /tabularnewline .

Puse todo en un archivo de script porque estoy en OSX y la versión de sed despachada no admite la sustitución de línea nueva con /n (que apesta cuando estás en un Makefile ).

La línea de fondo

En OSX / BSD:

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

con 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/

Esto es un poco duro, pero no hay una solución que realmente funcione en el nivel de Reestructurado de Texto.

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

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


Si bien parece que ReST no admite realmente la alineación del contenido de la celda, en realidad puede usar line-blocks dentro de su celda para imponer la preservación del espacio en blanco para rellenar el contenido de su celda de manera efectiva.

Tendrá que usar algunos de los caracteres de unicode-whitespace (por ejemplo, U+2001 - EM QUAD ) y tenerlos precedidos por un carácter de espacio normal ( U+0020 ), es decir, U+0020U+2001Your String para evitar que el analizador ReST se queje. Tablas mal formadas y referencias de sustitución no terminadas, etc.

+--------+---------+ | 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| +--------+---------+

Tablas como la anterior comienzan a parecer un poco incómodas y difíciles de mantener, pero el enfoque hace el trabajo. Tampoco hace falta decir que deberá editar y generar la salida UTF-8. Si bien rst2html.py trata esto bien, no estoy seguro de cómo la sphinx ocupa de esto y, si puede, si la alineación se mantiene al generar documentos que no son HTML.