2010-04-07 29 views
9

Tengo algunos archivos .rst y los convierto en archivos .tex usando el convertidor estándar de esfinge.Convertir tablas en primer lugar a LaTeX

En algunos .rst que tienen tablas con ancho especial como:

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

El .tex resultante contiene siempre las tablas como:

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

Por lo tanto, el ancho de columna se pierde.

¿Cómo puedo conservar el ancho de la columna al convertir primero al látex?


Solía ​​separador de coma demasiado,

.. list-table:: 
    :widths: 50 , 50 
    :header-rows: 1 

* - SETTING 
    - DESCRIPTION 
* - Enable 
    - Enables or disables internal tracing. 
* - Verbose 
    - Enables or disables extended internal tracing. 

pero no funciona .. tal vez utilizó un mal convertidor? ¿Qué convertidor recomiendas?

Respuesta

1

intento:

:widths: 50, 50 

con un separador de coma.

La salida también depende de cómo esté escrita su tabla en primer lugar.

Supuse que estaba utilizando la sintaxis de la primera tabla estándar, sin hacer tablas de listas con viñetas (como es posible). Para obtener más ayuda, intente http://docutils.sourceforge.net/docs/ref/rst/directives.html#tables

Además, si el 50, 50 es el ancho de la columna, su código de látex debe tener este aspecto:

\begin{tabulary}{ 1\textwidth}{ | p{0.5} | p{0.5} | } 

y:

\begin{tabulary}{total width of table}{| column width| column width|} 
+0

Solía ​​separador de coma demasiado, .. lista de tablas :: : anchos: 50, 50 : header-filas: 1 * - Marco - DESCRIPCIÓN * - Habilitar - Activa o desactiva interna rastreo. * - Detallado - Habilita o deshabilita el rastreo interno extendido. pero no funciona ... ¿Puedo usar un convertidor incorrecto? ¿Qué convertidor recomiendas? gracias – ace

+0

Si aún no está usando docutils, lo intentaré. Hay varios convertidores enumerados en el manual. Generalmente me gusta Pandoc por un convertidor, pero no trabajo mucho primero, así que no estoy seguro de cuán buena será la conversión. – Mica

+0

-1 porque la pregunta es sobre esfinge y esfinge no funciona con la sintaxis de docutils en ese caso, tienes que usar '..tabularcolumns ::' – bmu

0

puedo confirmar que esto:

.. list-table:: 
:widths: 10 40 50 

* - Module 
    - Link 
    - Description 

Funciona con rst2latex

\setlength{\DUtablewidth}{\linewidth} 
\begin{longtable*}[c]{|p{0.104\DUtablewidth}|p{0.375\DUtablewidth}|p{0.465\DUtablewidth}|} 
\hline 

Module 
& 
Link 
& 
Description 
\\ 
\hline 

Pero con Sphinx, obtengo lo que dice el OP. Así que no es un problema de rst2latex que me gustaría reunir.

El ancho "Auto" de que hablan los documentos tampoco es muy funcional, los enlaces tienden a desangrarse.

0

Como tengo una gran documentación, traté de arreglar la generación de látex.Además, considero que la notación de látex en los primeros archivos es una desventaja, porque es inconsistente y requiere que los editores aprendan en parte un lenguaje de marcado sensible.

Reemplacé LaTeXTranslator.depart_table con mi propia versión. Copié el depart_table original y añade este código (abreviado):

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

Im ni fluidez en Python ni Esfinge, a fin de utilizar a su propio riesgo. Espero que entiendas la idea o que incluso puedas dar consejos.

Si usa Python < 3.0 y desea eliminar completamente el factor 0,95, recuerde lanzar uno de los enteros para flotar o importar la división de __ future __.

Cuestiones relacionadas