org-md-export-as-markdownはorg-modeのテキストをMarkdownに変換します。変換時に自動で挿入される目次の位置と表記をカスタマイズしました。
何をしたいのか・なぜしたいのか
https://sximada.qrunch.io/ でページの一覧を見ると本文の先頭50文字前後が表示されています。ここには記事の要約を表示したいのですが、org-md-export-as-markdownを使うとファイルの先頭には目次が自動で挿入されてしまいます。そのため今までは手動で目次の位置を変更していました。
今回はその目次の位置修正作業を省くため、先頭ではなく最初の見出しの直前に目次が挿入されるようにします。また目次の表記が Table of Contents
となっていているので親しみが持てるよう おしながき
に変更します。
org-md-export-as-markdownの挙動
org-md-export-as-markdownでの出力にはTable of Contents(目次)が追加されます。例えば次のようなOrgファイルがあるとします。
このOrgファイルは次のようなMarkdownに出力されます。
# Table of Contents 1. [内容1](#org2b07bfa) 2. [内容2](#org0ff52e8) 3. [まとめ](#org3000cf8) この記事の説明です。 <a id="org2b07bfa"></a> # 内容1 <a id="org0ff52e8"></a> # 内容2 <a id="org3000cf8"></a> # まとめ
目次が先頭にあり、その後ろにOrgファイルの内容が挿入されています。しかし、今回は本当であれば以下のような出力に変更したいところです。
この記事の説明です。 # おしながき 1. [内容1](#org2b07bfa) 2. [内容2](#org0ff52e8) 3. [まとめ](#org3000cf8) <a id="org2b07bfa"></a> # 内容1 <a id="org0ff52e8"></a> # 内容2 <a id="org3000cf8"></a> # まとめ
変更したい項目は2つです。
- Table of Contentsの表示位置を最初の項目(内容1)の直前に差し込む
- Table of Contentsの表示を
おしながき
に変更
Table of Contentsの表示位置を最初の見出しの前に差し込む
Table of Contentsを移動させるには2つの設定を行います。
デフォルトのTable of Contentsをオフにする
Orgファイルのヘッダーに #+OPTIONS: toc:nil
を追加します。
#+OPTIONS: toc:nil
この設定でデフォルトのTable of Contentsは挿入されないようになります。
Table of Contentsを差し込みたいところに#+TOC: headlines Nを追加する
#+TOC: headlines N
が書かれているところにはTable of Contentsが挿入されます。
#+TOC: headlines 2
今回は2階層までを指定して最初の見出しの後ろに設定します。
Table of Contentsの表示を おしながき
に変更
Table of Contentsの表記は言語設定によって翻訳された状態で挿入されます。
言語を設定するには#+LANGUAGE:を指定します。日本語に設定するには ja
を設定します。
#+LANGUAGE: ja
これを設定するとTable of Contentsは以下のように挿入されます。
# 目次 1. [テスト1](#orge970f69) 2. [テスト2](#orge157e65) 3. [テスト3](#orgfc3429a)
# 目次
は # 目次
です。
これをおしながきに変更します。この翻訳にはorg-export-dictionaryの値が使われます。これは翻訳対象の文字列をcarにもつalistです。このalistの要素のcdrは、carが言語を指定する文字列(例えば"ja")です。 cdrは変換形式をkey、変換後の文字列をvalueにもつplistです。
org-export-dictionaryは上書きしてしまうと元に戻せなくなってしまうので、org-md-export-as-markdownを使うときだけ値を上書きする関数を定義します。
(defun our-org-md-export-as-markdown ()
(interactive)
(let ((org-export-dictionary
'(("%e %n: %c"
("fr" :default "%e %n : %c" :html "%e %n : %c"))
("Author"
("ar" :default "تأليف")
("ca" :default "Autor")
("cs" :default "Autor")
("da" :default "Forfatter")
("de" :default "Autor")
("eo" :html "Aŭtoro")
("es" :default "Autor")
("et" :default "Autor")
("fi" :html "Tekijä")
("fr" :default "Auteur")
("hu" :default "Szerzõ")
("is" :html "Höfundur")
("it" :default "Autore")
("ja" :default "著者" :html "著者")
("nl" :default "Auteur")
("no" :default "Forfatter")
("nb" :default "Forfatter")
("nn" :default "Forfattar")
("pl" :default "Autor")
("pt_BR" :default "Autor")
("ru" :html "Автор" :utf-8 "Автор")
("sl" :default "Avtor")
("sv" :html "Författare")
("uk" :html "Автор" :utf-8 "Автор")
("zh-CN" :html "作者" :utf-8 "作者")
("zh-TW" :html "作者" :utf-8 "作者"))
("Continued from previous page"
("ar" :default "تتمة الصفحة السابقة")
("cs" :default "Pokračování z předchozí strany")
("de" :default "Fortsetzung von vorheriger Seite")
("es" :html "Continúa de la página anterior" :ascii "Continua de la pagina anterior" :default "Continúa de la página anterior")
("fr" :default "Suite de la page précédente")
("it" :default "Continua da pagina precedente")
("ja" :default "前ページからの続き")
("nl" :default "Vervolg van vorige pagina")
("pt" :default "Continuação da página anterior")
("ru" :html "(Продолжение)"
:utf-8 "(Продолжение)")
("sl" :default "Nadaljevanje s prejšnje strani"))
("Continued on next page"
("ar" :default "التتمة في الصفحة التالية")
("cs" :default "Pokračuje na další stránce")
("de" :default "Fortsetzung nächste Seite")
("es" :html "Continúa en la siguiente página" :ascii "Continua en la siguiente pagina" :default "Continúa en la siguiente página")
("fr" :default "Suite page suivante")
("it" :default "Continua alla pagina successiva")
("ja" :default "次ページに続く")
("nl" :default "Vervolg op volgende pagina")
("pt" :default "Continua na página seguinte")
("ru" :html "(Продолжение следует)"
:utf-8 "(Продолжение следует)")
("sl" :default "Nadaljevanje na naslednji strani"))
("Created"
("cs" :default "Vytvořeno")
("sl" :default "Ustvarjeno"))
("Date"
("ar" :default "بتاريخ")
("ca" :default "Data")
("cs" :default "Datum")
("da" :default "Dato")
("de" :default "Datum")
("eo" :default "Dato")
("es" :default "Fecha")
("et" :html "Kuupäev" :utf-8 "Kuupäev")
("fi" :html "Päivämäärä")
("hu" :html "Dátum")
("is" :default "Dagsetning")
("it" :default "Data")
("ja" :default "日付" :html "日付")
("nl" :default "Datum")
("no" :default "Dato")
("nb" :default "Dato")
("nn" :default "Dato")
("pl" :default "Data")
("pt_BR" :default "Data")
("ru" :html "Дата" :utf-8 "Дата")
("sl" :default "Datum")
("sv" :default "Datum")
("uk" :html "Дата" :utf-8 "Дата")
("zh-CN" :html "日期" :utf-8 "日期")
("zh-TW" :html "日期" :utf-8 "日期"))
("Equation"
("ar" :default "معادلة")
("cs" :default "Rovnice")
("da" :default "Ligning")
("de" :default "Gleichung")
("es" :ascii "Ecuacion" :html "Ecuación" :default "Ecuación")
("et" :html "Võrrand" :utf-8 "Võrrand")
("fr" :ascii "Equation" :default "Équation")
("is" :default "Jafna")
("ja" :default "方程式")
("no" :default "Ligning")
("nb" :default "Ligning")
("nn" :default "Likning")
("pt_BR" :html "Equação" :default "Equação" :ascii "Equacao")
("ru" :html "Уравнение"
:utf-8 "Уравнение")
("sl" :default "Enačba")
("sv" :default "Ekvation")
("zh-CN" :html "方程" :utf-8 "方程"))
("Figure"
("ar" :default "شكل")
("cs" :default "Obrázek")
("da" :default "Figur")
("de" :default "Abbildung")
("es" :default "Figura")
("et" :default "Joonis")
("is" :default "Mynd")
("ja" :default "図" :html "図")
("no" :default "Illustrasjon")
("nb" :default "Illustrasjon")
("nn" :default "Illustrasjon")
("pt_BR" :default "Figura")
("ru" :html "Рисунок" :utf-8 "Рисунок")
("sv" :default "Illustration")
("zh-CN" :html "图" :utf-8 "图"))
("Figure %d:"
("ar" :default "شكل %d:")
("cs" :default "Obrázek %d:")
("da" :default "Figur %d")
("de" :default "Abbildung %d:")
("es" :default "Figura %d:")
("et" :default "Joonis %d:")
("fr" :default "Figure %d :" :html "Figure %d :")
("is" :default "Mynd %d")
("ja" :default "図%d: " :html "図%d: ")
("no" :default "Illustrasjon %d")
("nb" :default "Illustrasjon %d")
("nn" :default "Illustrasjon %d")
("pt_BR" :default "Figura %d:")
("ru" :html "Рис. %d.:" :utf-8 "Рис. %d.:")
("sl" :default "Slika %d")
("sv" :default "Illustration %d")
("zh-CN" :html "图%d " :utf-8 "图%d "))
("Footnotes"
("ar" :default "الهوامش")
("ca" :html "Peus de pàgina")
("cs" :default "Poznámky pod čarou")
("da" :default "Fodnoter")
("de" :html "Fußnoten" :default "Fußnoten")
("eo" :default "Piednotoj")
("es" :ascii "Nota al pie de pagina" :html "Nota al pie de página" :default "Nota al pie de página")
("et" :html "Allmärkused" :utf-8 "Allmärkused")
("fi" :default "Alaviitteet")
("fr" :default "Notes de bas de page")
("hu" :html "Lábjegyzet")
("is" :html "Aftanmálsgreinar")
("it" :html "Note a piè di pagina")
("ja" :default "脚注" :html "脚注")
("nl" :default "Voetnoten")
("no" :default "Fotnoter")
("nb" :default "Fotnoter")
("nn" :default "Fotnotar")
("pl" :default "Przypis")
("pt_BR" :html "Notas de Rodapé" :default "Notas de Rodapé" :ascii "Notas de Rodape")
("ru" :html "Сноски" :utf-8 "Сноски")
("sl" :default "Opombe")
("sv" :default "Fotnoter")
("uk" :html "Примітки"
:utf-8 "Примітки")
("zh-CN" :html "脚注" :utf-8 "脚注")
("zh-TW" :html "腳註" :utf-8 "腳註"))
("List of Listings"
("ar" :default "قائمة بالبرامج")
("cs" :default "Seznam programů")
("da" :default "Programmer")
("de" :default "Programmauflistungsverzeichnis")
("es" :ascii "Indice de Listados de programas" :html "Índice de Listados de programas" :default "Índice de Listados de programas")
("et" :default "Loendite nimekiri")
("fr" :default "Liste des programmes")
("ja" :default "ソースコード目次")
("no" :default "Dataprogrammer")
("nb" :default "Dataprogrammer")
("ru" :html "Список распечаток"
:utf-8 "Список распечаток")
("sl" :default "Seznam programskih izpisov")
("zh-CN" :html "代码目录" :utf-8 "代码目录"))
("List of Tables"
("ar" :default "قائمة بالجداول")
("cs" :default "Seznam tabulek")
("da" :default "Tabeller")
("de" :default "Tabellenverzeichnis")
("es" :ascii "Indice de tablas" :html "Índice de tablas" :default "Índice de tablas")
("et" :default "Tabelite nimekiri")
("fr" :default "Liste des tableaux")
("is" :default "Töfluskrá" :html "Töfluskrá")
("ja" :default "表目次")
("no" :default "Tabeller")
("nb" :default "Tabeller")
("nn" :default "Tabeller")
("pt_BR" :default "Índice de Tabelas" :ascii "Indice de Tabelas")
("ru" :html "Список таблиц"
:utf-8 "Список таблиц")
("sl" :default "Seznam tabel")
("sv" :default "Tabeller")
("zh-CN" :html "表格目录" :utf-8 "表格目录"))
("Listing"
("ar" :default "برنامج")
("cs" :default "Program")
("da" :default "Program")
("de" :default "Programmlisting")
("es" :default "Listado de programa")
("et" :default "Loend")
("fr" :default "Programme" :html "Programme")
("ja" :default "ソースコード")
("no" :default "Dataprogram")
("nb" :default "Dataprogram")
("pt_BR" :default "Listagem")
("ru" :html "Распечатка"
:utf-8 "Распечатка")
("sl" :default "Izpis programa")
("zh-CN" :html "代码" :utf-8 "代码"))
("Listing %d:"
("ar" :default "برنامج %d:")
("cs" :default "Program %d:")
("da" :default "Program %d")
("de" :default "Programmlisting %d")
("es" :default "Listado de programa %d")
("et" :default "Loend %d")
("fr" :default "Programme %d :" :html "Programme %d :")
("ja" :default "ソースコード%d:")
("no" :default "Dataprogram %d")
("nb" :default "Dataprogram %d")
("pt_BR" :default "Listagem %d")
("ru" :html "Распечатка %d.:"
:utf-8 "Распечатка %d.:")
("sl" :default "Izpis programa %d")
("zh-CN" :html "代码%d " :utf-8 "代码%d "))
("References"
("ar" :default "المراجع")
("cs" :default "Reference")
("fr" :ascii "References" :default "Références")
("de" :default "Quellen")
("es" :default "Referencias")
("sl" :default "Reference"))
("See figure %s"
("cs" :default "Viz obrázek %s")
("fr" :default "cf. figure %s"
:html "cf. figure %s" :latex "cf.~figure~%s")
("sl" :default "Glej sliko %s"))
("See listing %s"
("cs" :default "Viz program %s")
("fr" :default "cf. programme %s"
:html "cf. programme %s" :latex "cf.~programme~%s")
("sl" :default "Glej izpis programa %s"))
("See section %s"
("ar" :default "انظر قسم %s")
("cs" :default "Viz sekce %s")
("da" :default "jævnfør afsnit %s")
("de" :default "siehe Abschnitt %s")
("es" :ascii "Vea seccion %s" :html "Vea sección %s" :default "Vea sección %s")
("et" :html "Vaata peatükki %s" :utf-8 "Vaata peatükki %s")
("fr" :default "cf. section %s")
("ja" :default "セクション %s を参照")
("pt_BR" :html "Veja a seção %s" :default "Veja a seção %s"
:ascii "Veja a secao %s")
("ru" :html "См. раздел %s"
:utf-8 "См. раздел %s")
("sl" :default "Glej poglavje %d")
("zh-CN" :html "参见第%s节" :utf-8 "参见第%s节"))
("See table %s"
("cs" :default "Viz tabulka %s")
("fr" :default "cf. tableau %s"
:html "cf. tableau %s" :latex "cf.~tableau~%s")
("sl" :default "Glej tabelo %s"))
("Table"
("ar" :default "جدول")
("cs" :default "Tabulka")
("de" :default "Tabelle")
("es" :default "Tabla")
("et" :default "Tabel")
("fr" :default "Tableau")
("is" :default "Tafla")
("ja" :default "表" :html "表")
("pt_BR" :default "Tabela")
("ru" :html "Таблица"
:utf-8 "Таблица")
("zh-CN" :html "表" :utf-8 "表"))
("Table %d:"
("ar" :default "جدول %d:")
("cs" :default "Tabulka %d:")
("da" :default "Tabel %d")
("de" :default "Tabelle %d")
("es" :default "Tabla %d")
("et" :default "Tabel %d")
("fr" :default "Tableau %d :")
("is" :default "Tafla %d")
("ja" :default "表%d:" :html "表%d:")
("no" :default "Tabell %d")
("nb" :default "Tabell %d")
("nn" :default "Tabell %d")
("pt_BR" :default "Tabela %d")
("ru" :html "Таблица %d.:"
:utf-8 "Таблица %d.:")
("sl" :default "Tabela %d")
("sv" :default "Tabell %d")
("zh-CN" :html "表%d " :utf-8 "表%d "))
("Table of Contents"
("ar" :default "قائمة المحتويات")
("ca" :html "Índex")
("cs" :default "Obsah")
("da" :default "Indhold")
("de" :default "Inhaltsverzeichnis")
("eo" :default "Enhavo")
("es" :ascii "Indice" :html "Índice" :default "Índice")
("et" :default "Sisukord")
("fi" :html "Sisällysluettelo")
("fr" :ascii "Sommaire" :default "Table des matières")
("hu" :html "Tartalomjegyzék")
("is" :default "Efnisyfirlit")
("it" :default "Indice")
("ja" :default "目次" :html "おしながき")
("nl" :default "Inhoudsopgave")
("no" :default "Innhold")
("nb" :default "Innhold")
("nn" :default "Innhald")
("pl" :html "Spis treści")
("pt_BR" :html "Índice" :utf8 "Índice" :ascii "Indice")
("ru" :html "Содержание"
:utf-8 "Содержание")
("sl" :default "Kazalo")
("sv" :html "Innehåll")
("uk" :html "Зміст" :utf-8 "Зміст")
("zh-CN" :html "目录" :utf-8 "目录")
("zh-TW" :html "目錄" :utf-8 "目錄"))
("Unknown reference"
("ar" :default "مرجع غير معرّف")
("da" :default "ukendt reference")
("de" :default "Unbekannter Verweis")
("es" :default "Referencia desconocida")
("et" :default "Tundmatu viide")
("fr" :ascii "Destination inconnue" :default "Référence inconnue")
("ja" :default "不明な参照先")
("pt_BR" :default "Referência desconhecida"
:ascii "Referencia desconhecida")
("ru" :html "Неизвестная ссылка"
:utf-8 "Неизвестная ссылка")
("sl" :default "Neznana referenca")
("zh-CN" :html "未知引用" :utf-8 "未知引用")))))
(org-md-export-as-markdown)))
このour-org-md-export-as-markdownをM-xで呼び出すと次のようなMarkdownに変換されます。
# おしながき 1. [内容1](#org18246ea) 2. [内容2](#orgb07ec63) 3. [まとめ](#org587c63e) この記事の説明です。 <a id="org18246ea"></a> # 内容1 <a id="orgb07ec63"></a> # 内容2 <a id="org587c63e"></a> # まとめ
目次のタイトルが おしながき
になっています。
2つの設定を合わせる
先ほどの設定を適応すると次のようなOrgファイルができます。
このファイルのバッファ上でour-org-md-export-as-markdownを実行すると次のMarkdownに変換されます。
この記事の説明です。 # おしながき 1. [内容1](#org46b4f5f) 2. [内容2](#org1df6c80) 3. [まとめ](#org97ed709) <a id="org46b4f5f"></a> # 内容1 <a id="org1df6c80"></a> # 内容2 <a id="org97ed709"></a> # まとめ
目次のタイトルが おしながき
になって最初のheadlineの直前に挿入されました。
まとめ
org-modeのOPTIONSヘッダーとTOCヘッダーを使うことで目次の位置を変更しました。またorg-export-dictionaryを一時的に上書きすることで目次の文言を おしながき
に変更しました。