Robię dokumenty w trybie org i eksportuję je do LaTeX, HTML itp. W razie potrzeby. Często używam tego znacznika, :no_export:
ilekroć nie chcę, aby pewne poddrzewo pojawiło się na wyjściu.
Chcę także, aby eksport całkowicie ignorował niektóre nagłówki poddrzewa , ale nie ignorował zawartości tego poddrzewa pod tym nagłówkiem. Innymi słowy, niektóre poddrzewa powinny być eksportowane tak, jakby ich zawartość była tylko kontynuacją elementu nadrzędnego, zamiast mieć własne poddrzewo.
Idealnie wyobrażam sobie taki tag :no_title:
. Chcę, aby mój kontur trybu org wyglądał mniej więcej tak, jak zwykle. Ale rozważałbym inne podejścia z podobnymi wynikami.
Aby to zilustrować, oto MWE dokumentu sporządzonego w trybie org.
* Chapter 1
** Section 1
*** Paragraph 1 :no_title:
First paragraph of text in the section.
*** Paragraph 2 :no_title:
Second paragraph of text in the section.
* Chapter 2
** Section 1
*** Subsection 1
**** Paragraph 1 :no_title:
First paragraph of text in the subsection.
**** Paragraph 2 :no_title:
Second paragraph of text in the subsection
Kiedy eksportuję to obecnie, otrzymuję coś takiego:
1 Rozdział 1
1.1 Sekcja 1
1.1.1 Ustęp 1: no_title:
Pierwszy akapit tekstu w sekcji.
1.1.2 Ustęp 2: no_title:
Drugi akapit tekstu w sekcji.
2 Rozdział 2
2.1 Sekcja 1
2.1.1 Podsekcja 1
◊ 2.1.1.1 Ustęp 1: no_title:
Pierwszy akapit tekstu w podsekcji.
Ale chcę bardziej:
1 Rozdział 1
1.1 Sekcja 1
Pierwszy akapit tekstu w sekcji.
Drugi akapit tekstu w sekcji.
2 Rozdział 2
2.1 Sekcja 1
2.1.1 Podsekcja 1
Pierwszy akapit tekstu w podsekcji.
źródło
contrib/lisp
folderze - patrz orgmode.org/cgit.cgi/org-mode.git/tree/contrib/lisp/ox-extra.el - w pliku konfiguracyjnym emacsa może być konieczne dodanie wiersza w rodzaju(add-to-list 'load-path "/path/to/contrib/lisp")
.Tak , jest to całkowicie możliwe. Dodaj następujący kod do pliku init:
Podziękowanie
To pytanie zostało już zadane na StackOverflow (z innym naciskiem i sformułowaniami, prawdopodobnie dlatego nie udało się go zlokalizować podczas przeszukiwania Internetu przed opublikowaniem tutaj). Powyższy kod jest uproszczoną wersją kodu w zaakceptowanej odpowiedzi ; działa dla nowego eksportera wprowadzonego w wersji
org-mode
8.0 i jest niezależny od backendów .Aktualizacja
Jak omówiono w komentarzach, powyższy kod powoduje
:no_title:
zniknięcie zawartości pozycji oznaczonych za pomocą, jeśli są poprzedzone pozycją oznaczoną jako wykluczoną z eksportowanego dokumentu. Na przykład eksportowanie następującego dokumentu spowoduje utworzenie dokumentu z tytułem i spisem treści, ale bez zawartości:Powodem tego jest to, że
org-mode
usuwa nagłówek oznaczony:no_title:
przed usunięciem wpisu, którego nagłówek jest oznaczony:no_export:
. W związku z tym, gdy przechodzi do usuwaniano_export
wpisu, traktuje zawartośćno_title
wpisu jako należącą do poprzedniegono_export
wpisu. Ma to doskonały sens, ponieważ nie ma już elementu strukturalnego (nagłówka), który oddziela zawartość oryginalnych wpisów.Aby rozwiązać ten problem, możemy przenieść odpowiedzialność za usunięcie
no_export
wpisóworg-remove-headlines
. W ten sposób upewniamy się, że wszystkieno_export
wpisy zniknęły, zanim nagłówki zostaną usunięte zno_title
wpisów:źródło
no_export
nagłówkiem pojawia się tuż przed znacznikiemno_title
, zawartość drugiego nagłówka również nie jest eksportowana.no_export
ino_title
nagłówki (tj. Czy mają taką samą liczbę wiodących gwiazd)? Jeśli nie, to który z dwóch nagłówków ma więcej gwiazdek?org-remove-headlines
jest tylko funkcją; nic ci nie pomoże, jeśli nigdy nie zostanie wywołany z dowolnego miejsca. Tak, nadal musisz ocenić linię,(add-hook 'org-export-before-processing-hook #'org-remove-headlines)
aby umożliwić prawidłowe zachowanie. Prawdopodobnie powinienem był to wyraźnie wyrazić podczas edycji mojej oryginalnej odpowiedzi. Co do ostrzeżeń, które widzisz: nie dostaję tych z waniliowym Emacsem 24.4 i wersją 8.2.10 Trybu Org. Aby pozbyć się ostrzeżenia, wspomnij, że możesz spróbować(require 'org-agenda)
przed ocenąadd-hook
linii.