Orgmode - Dikey başlık

Sep 12 2020

org modu ile dikey bir başlık oluşturmak da mümkün mü?

Bunun gibi bir şey (camgöbeği renkli alanlar):

Bunun gibi yatay bir başlık oluşturabilirsiniz:

| Header  | Header  | Header  | Header  | Header  |
|---------+---------+---------+---------+---------|
| Content | Content | Content | Content | Content |

ama ben de dikey bir başlık istiyorum:

| Header | Header  | Header  | Header  | Header  |
|--------+---------+---------+---------+---------|
| Header | Content | Content | Content | Content |
| Header | Content | Content | Content | Content |

Bunun nedeni, onu HTML'ye aktarmak istemem.

HTML şöyle görünecektir:

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

dikey başlığı destekliyorsa, şunun gibi bir şey olmalıdır:

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

Not thikinci kod bloğu yerine bir elemanını tdöğenin tbody. Bunu JavaScript ile yapabileceğimi biliyorum, ancak bunu org-modezaten destekleyip desteklemediğini bilmek istiyorum , bu da işleri çok daha kolay hale getirir.

Yanıtlar

NickD Sep 12 2020 at 04:46

İlk sütunu bir "başlık" sütunu yapmak için yapmanız gereken tek şey

(setq org-html-table-use-header-tags-for-first-column t)

ya genel olarak ya da yerel bir dosya değişkeni olarak :

# Local Variables:
# org-html-table-use-header-tags-for-first-column: t
# End:

AFAIK, bunu tablo başına belirleyemezsiniz.

Örneğin:

* 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:

tam olarak gösterdiğiniz gibi HTML'ye aktarılacaktır (renkler hariç).

Bkz HTML ihracat içinde Tablolar diğer değişkenler için manuel bölümünde, fakat dikkat #+ATTR_HTMLsözdizimi: Ben Org modunun son sürümleri için yukarıda göstermek gibi, ama manuel gösterileri eski sözdizimi:

 #+ATTR_HTML: border="2" rules="all" frame="border"

versiyonunuza bağlı olarak yine de kullanmanız gerekebilir. Dokümanla ilgili bir hata açacağım.


[ESKİ CEVAP: Aşağıdakiler soruyu yanıtlamıyor ama burada bırakmak yeterince ilginç olabilir.]

Böyle bir şeyi kastediyorsan:



* 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

cevap kesin bir EVET.

Tabloyu aşağıdaki talimatlarla oluşturdum:

  • M-x org-create-table RET 1x13 RET: 13 satırlık tek sütunlu bir tablo oluşturur.
  • Tür ., ilk satırda 1yazmaya devam edin ardından ikinci sıradaki ve S-<Enter>satır kalanını doldurun.
  • M-x org-table-transpose-table-at-point RET tek sıralı bir tablo haline getirmek için.
  • TABİkinci satırı oluşturmak ve onun ilk sütununa gitmek için basın .
  • Tür 1yazmaya devam edin sonra ikinci satırın ilk sütununda ve S-<Enter>o sütun geri kalanını doldurun.

Artık tablonuzda gösterdiklerinizle doldurulmuş ilk sütun ve ilk satıra sahipsiniz. Şimdi, yukarıda gösterildiği gibi tablonun altına bir tablo formülü ekleyin ve tuşuna basın C-c C-c: tablonun geri kalanı doldurulur (önceden Calc'ı etkinleştirmeniz gerekir: M-x calc RET qbunu yapmak için yazın).

Tablo formülü şunu söyler: tablodaki diğer her hücreyi (satırlar 2 sonuncu ve sütunlar 2 sonuncu) bulduğunuz sayıların çarpımı (satır 1, geçerli sütun) ve (geçerli satır, sütun 1) ile doldurun.