Orgmode - Vertikaler Header
Ist es möglich, auch im Organisationsmodus einen vertikalen Header zu erstellen?
So etwas (cyanfarbene Felder):
Sie können eine horizontale Kopfzeile wie folgt erstellen:
| Header | Header | Header | Header | Header |
|---------+---------+---------+---------+---------|
| Content | Content | Content | Content | Content |
aber ich möchte auch einen vertikalen Header:
| Header | Header | Header | Header | Header |
|--------+---------+---------+---------+---------|
| Header | Content | Content | Content | Content |
| Header | Content | Content | Content | Content |
Der Grund dafür ist, dass ich es nach HTML exportieren möchte.
Der HTML-Code sieht folgendermaßen aus:
<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>
Wenn es vertikale Header unterstützt, sollte es ungefähr so aussehen:
<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>
Beachten Sie das thElement im zweiten Codeblock anstelle eines tdElements im tbody. Ich weiß, dass ich dies mit JavaScript tun kann, aber ich möchte wissen, ob es org-modemöglicherweise bereits unterstützt wird, was die Dinge viel einfacher machen würde.
Antworten
Um die erste Spalte zu einer "Header" -Spalte zu machen, müssen Sie nur noch etwas tun
(setq org-html-table-use-header-tags-for-first-column t)
entweder global oder als lokale Dateivariable :
# Local Variables:
# org-html-table-use-header-tags-for-first-column: t
# End:
AFAIK, Sie können es jedoch nicht pro Tabelle angeben.
Beispielsweise:
* 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:
wird genau so in HTML exportiert, wie Sie es zeigen (mit Ausnahme der Farben).
Siehe die Tabellen in HTML - Export Abschnitt des Handbuchs für andere Variablen, aber achten Sie auf die #+ATTR_HTMLSyntax: Es ist , wie ich oben für neuere Versionen von Org - Modus zeigen, aber die manuelle zeigt die alte Syntax:
#+ATTR_HTML: border="2" rules="all" frame="border"
die Sie je nach Version möglicherweise noch einsetzen müssen. Ich werde einen Fehler über das Dokument öffnen.
[ALTE ANTWORT: Das Folgende beantwortet die Frage nicht, aber es könnte interessant genug sein, hier zu bleiben.]
Wenn Sie so etwas meinen:
* 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
Die Antwort ist ein nachdrückliches JA.
Ich habe die Tabelle mit den folgenden Anweisungen erstellt:
M-x org-create-table RET 1x13 RET: Damit wird eine einzelne Spaltentabelle mit 13 Zeilen erstellt.- Geben Sie
.die erste Zeile1in die zweite Zeile ein und tippen Sie dann weiterS-<Enter>, um den Rest der Zeilen zu füllen. M-x org-table-transpose-table-at-point RETum es in eine einzelne Zeilentabelle zu machen.- Drücken Sie
TAB, um die zweite Zeile zu erstellen und in die erste Spalte zu wechseln. - Geben Sie
1die erste Spalte der zweiten Zeile ein und tippen Sie dann weiterS-<Enter>, um den Rest dieser Spalte auszufüllen.
Sie haben jetzt die erste Spalte und die erste Zeile, die mit dem gefüllt sind, was Sie in Ihrer Tabelle anzeigen. Fügen Sie nun wie oben gezeigt eine Tabellenformel unter die Tabelle ein und drücken Sie C-c C-c: Der Rest der Tabelle wird ausgefüllt (Sie müssen Calc vorher aktivieren: Geben Sie M-x calc RET qdazu ein).
Die Tabellenformel lautet: Füllen Sie jede zweite Zelle in der Tabelle (Zeilen 2 bis zuletzt und Spalten 2 bis zuletzt) mit dem Produkt der Zahlen aus, die Sie in (Zeile 1, aktuelle Spalte) und (aktuelle Zeile, Spalte 1) finden.