Orgmode: encabezado vertical
¿También es posible crear un encabezado vertical con el modo de organización?
Algo como esto (campos de color cian):
Puede crear un encabezado horizontal como este:
| Header | Header | Header | Header | Header |
|---------+---------+---------+---------+---------|
| Content | Content | Content | Content | Content |
pero también quiero un encabezado vertical:
| Header | Header | Header | Header | Header |
|--------+---------+---------+---------+---------|
| Header | Content | Content | Content | Content |
| Header | Content | Content | Content | Content |
La razón de esto es que quiero exportarlo a HTML.
El HTML se verá así:
<table border="2" cellpadding="6" cellspacing="0" frame="hsides" rules="groups">
<colgroup>
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
</colgroup>
<thead>
<tr>
<th class="org-right" scope="col">.</th>
<th class="org-right" scope="col">1</th>
<th class="org-right" scope="col">2</th>
<th class="org-right" scope="col">3</th>
<th class="org-right" scope="col">4</th>
<th class="org-right" scope="col">5</th>
<th class="org-right" scope="col">6</th>
<th class="org-right" scope="col">7</th>
<th class="org-right" scope="col">8</th>
<th class="org-right" scope="col">9</th>
<th class="org-right" scope="col">10</th>
<th class="org-right" scope="col">11</th>
<th class="org-right" scope="col">12</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1</td>
<td class="org-right">1</td>
<td class="org-right">2</td>
<td class="org-right">3</td>
<td class="org-right">4</td>
<td class="org-right">5</td>
<td class="org-right">6</td>
<td class="org-right">7</td>
<td class="org-right">8</td>
<td class="org-right">9</td>
<td class="org-right">10</td>
<td class="org-right">11</td>
<td class="org-right">12</td>
</tr>
</tbody>
</table>
si admite encabezado vertical, debería ser algo como esto:
<table border="2" cellpadding="6" cellspacing="0" frame="hsides" rules="groups">
<colgroup>
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
<col class="org-right">
</colgroup>
<thead>
<tr>
<th class="org-right" scope="col">.</th>
<th class="org-right" scope="col">1</th>
<th class="org-right" scope="col">2</th>
<th class="org-right" scope="col">3</th>
<th class="org-right" scope="col">4</th>
<th class="org-right" scope="col">5</th>
<th class="org-right" scope="col">6</th>
<th class="org-right" scope="col">7</th>
<th class="org-right" scope="col">8</th>
<th class="org-right" scope="col">9</th>
<th class="org-right" scope="col">10</th>
<th class="org-right" scope="col">11</th>
<th class="org-right" scope="col">12</th>
</tr>
</thead>
<tbody>
<tr>
<th class="org-right">1</th>
<td class="org-right">1</td>
<td class="org-right">2</td>
<td class="org-right">3</td>
<td class="org-right">4</td>
<td class="org-right">5</td>
<td class="org-right">6</td>
<td class="org-right">7</td>
<td class="org-right">8</td>
<td class="org-right">9</td>
<td class="org-right">10</td>
<td class="org-right">11</td>
<td class="org-right">12</td>
</tr>
</tbody>
</table>
Tenga en cuenta el thelemento en el segundo bloque de código en lugar de un tdelemento en el tbody. Sé que puedo hacer esto con JavaScript, pero quiero saber si es org-modeposible que ya lo admita, lo que facilitaría mucho las cosas.
Respuestas
Para convertir la primera columna en una columna de "encabezado", todo lo que tiene que hacer es
(setq org-html-table-use-header-tags-for-first-column t)
ya sea globalmente o como una variable de archivo local :
# Local Variables:
# org-html-table-use-header-tags-for-first-column: t
# End:
AFAIK, sin embargo, no puede especificarlo por tabla.
Por ejemplo:
* Multiplication table
#+ATTR_HTML: :border 3 :rules all :frame border
| . | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|----+----+----+----+----+----+----+----+----+-----+-----|
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 2 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
| 3 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 |
| 4 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 |
| 5 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 |
| 6 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 |
| 7 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 |
| 8 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 |
| 9 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
| 10 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
#+TBLFM: @2$2..@>$> = @1$0 * @0$1
* Local variables :noexport:
# Local Variables:
# org-html-table-use-header-tags-for-first-column: t
# End:
se exportará a HTML exactamente como se muestra (excepto los colores).
Consulte la sección de exportación de Tablas en HTML del manual para ver otras variables, pero tenga cuidado con la #+ATTR_HTMLsintaxis: es como se muestra arriba para las versiones recientes del modo Org, pero el manual muestra la sintaxis anterior:
#+ATTR_HTML: border="2" rules="all" frame="border"
que aún podría tener que emplear, dependiendo de su versión. Abriré un error sobre el documento.
[ANTIGUA RESPUESTA: lo siguiente no responde a la pregunta, pero podría ser lo suficientemente interesante como para dejarlo aquí.]
Si te refieres a algo como esto:
* Multiplication table
| . | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 |
| 3 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | 36 |
| 4 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 |
| 5 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 |
| 6 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 | 66 | 72 |
| 7 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 | 77 | 84 |
| 8 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 88 | 96 |
| 9 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 | 99 | 108 |
| 10 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 |
| 11 | 11 | 22 | 33 | 44 | 55 | 66 | 77 | 88 | 99 | 110 | 121 | 132 |
| 12 | 12 | 24 | 36 | 48 | 60 | 72 | 84 | 96 | 108 | 120 | 132 | 144 |
#+TBLFM: @2$2..@>$> = @1$0 * @0$1
La respuesta es un rotundo si.
Creé la tabla con el siguiente conjunto de instrucciones:
M-x org-create-table RET 1x13 RET: que crea una tabla de una sola columna con 13 filas.- Escriba
.en la primera fila,1en la segunda fila y luego siga escribiendoS-<Enter>para completar el resto de las filas. M-x org-table-transpose-table-at-point RETpara convertirlo en una tabla de una sola fila.- Presione
TABpara crear la segunda fila y pasar a la primera columna de la misma. - Escriba
1la primera columna de la segunda fila y luego siga escribiendoS-<Enter>para completar el resto de esa columna.
Ahora tiene la primera columna y la primera fila, pobladas con lo que muestra en su tabla. Ahora agregue una fórmula de tabla debajo de la tabla como se muestra arriba y presione C-c C-c: el resto de la tabla se completa (debe activar Calc de antemano: escriba M-x calc RET qpara hacerlo).
La fórmula de la tabla dice: complete todas las demás celdas de la tabla (filas 2 hasta el final y columnas 2 hasta el final) con el producto de los números que encuentre en (fila 1, columna actual) y (fila actual, columna 1).