Zmień tytuł spisu treści w trybie Org zgodnie z językiem dokumentu

14

Czy istnieje opcja zmieniająca domyślny tytuł spisu treści w trybie Org?
Mój dokument nie jest w języku angielskim, dlatego chcę przetłumaczyć tytuł spisu treści.


Odpowiedź

Jak powiedział JeanPierre, chodzi o ustawienia eksportu. Możesz ustawić LANGUAGEna górze orgdokumentu w ten sposób:

#+LANGUAGE: fr

A francuski będzie używany jako domyślny język wszystkich łańcuchów orgtworzonych podczas eksportu.
Stała odwzorowań odpowiedzialny za tłumaczenie jest org-export-dictionaryw ox.ela jeśli język nie jest obsługiwany można upuścić go tam i wtedy eval-defunniech zmiana nastąpi. W moim przypadku:

(defconst org-export-dictionary 
    ...   
    ("Table of Contents"
         ...
         ("sr" :html "Sadržaj" :utf-8 "Sadržaj")
         ...)
    ...)

Napisałem naiwną funkcję, która może być przydatna w init.el:

(defun org-export-translate-to-lang (term-translations &optional lang)
  "Adds desired translations to `org-export-dictionary'.
   TERM-TRANSLATIONS is alist consisted of term you want to translate
   and its corresponding translation, first as :default then as :html and
   :utf-8. LANG is language you want to translate to."
  (dolist (term-translation term-translations)
    (let* ((term (car term-translation))
           (translation-default (nth 1 term-translation))
           (translation-html (nth 2 term-translation))
           (translation-utf-8 (nth 3 term-translation))
           (term-list (assoc term org-export-dictionary))
           (term-langs (cdr term-list)))
      (setcdr term-list (append term-langs
                                (list
                                 (list lang
                                       :default translation-default
                                       :html translation-html
                                       :utf-8 translation-utf-8)))))))

(org-export-translate-to-lang '(("Table of Contents"
                                 "Sadržaj"
                                 "Sadržaj"
                                 "Sadržaj")
                                ("Another term"
                                 "coilogji"))
                              "sr")

Zrzeczenie się

Nie działa, jeśli chcesz eksportować przez Latex (Latex jest używany, gdy Org eksportuje do PDF). Spójrz na odpowiedź i komentarze Tylera.

Foki
źródło
Do jakiego formatu eksportujesz? PDF, HTML lub?
Tyler
@TylerI Eksportuję głównie do ODT i HTML.
foki

Odpowiedzi:

3

Podręcznik organizacji mówi o ustawieniach eksportu (powinieneś móc przeglądać je w informacjach emacsa C-h i m Org m exporting):

'JĘZYK'

Język używany do tłumaczenia niektórych ciągów („org-export-default-language”). Np. „# + LANGUAGE: fr” każe Orgowi przetłumaczyć File (angielski) na Fichier (francuski) w tabeli zegarowej.

Nie próbowałem tego, ale spodziewam się, że powinien zrobić to, co chcesz.

Jean Pierre
źródło
1
Niewystarczające dla wszystkich eksporterów, w przypadku eksportu lateksu warto przyjrzeć się odpowiedzi na @ rené.
Jocelyn delalande
10

Jak wskazała odpowiedź JeanPierre, musisz określić ustawienie eksportu języka. W przypadku języka francuskiego działa następna linia:

#+LANGUAGE: fr

Nie wszystkie języki są obsługiwane i, jak powiedziałeś, można zobaczyć, które przeglądają org-latex-export-dictionaryzmienną (możesz użyć polecenia emacs, C-h va następnie wpisać nazwę zmiennej). Niektóre języki mogą być obsługiwane tylko częściowo lub wcale, jak serbski. Jeśli chcesz, aby działał z nieobsługiwanym językiem, dodaj przetłumaczone ciągi do zmiennej i najlepiej wyślij je do programistów, aby zakończyło się to trybem org.

LaTex i PDF

Jeśli eksportujesz do LaTex i chcesz pozwolić Babelowi zmienić tekst, użyj:

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}

Będzie to działać zarówno w HTML, jak i lateksie, ponieważ słowo kluczowe AUTO zostanie zastąpione odpowiednią nazwą języka Babel. Aby wyświetlić obsługiwane języki, zobaczorg-latex-babel-language-alist zmienną. Nie wszystkie języki dostępne w Babel są dostępne, ale serbski jest i działa (przetestowano, a „Contents” pojawia się jako „Sadržaj”).

Jeśli twój język nie jest w, org-latex-babel-language-alistale jest dostępny w babel, jak Breton, użyj:

#+LANGUAGE: br
#+LATEX_HEADER: \usepackage[breton]{babel}

Jak Breton nie jest w org-latex-export-dictionarytej LANGUAGEzmiennej coś dla eksportu HTML nie zrobi, to będzie w języku angielskim, ale jest to konieczne. Dzieje się tak, ponieważ to, co znajdzie się w pliku LaTex, będzie \usepackage[breton, <default-lang>]{babel}tam default-lang, gdzie będzie angielski, jeśli LANGUAGEnie jest obecny, a ostatni język jest uważany przez Babel za domyślny. Jak brnie ma org-latex-babel-language-alistnas w końcu\usepackage[breton, ]{babel} , tam Breton jest domyślny.

Jeśli zostanie dodany Breton, i org-latex-babel-language-alisttak będzie działał ( \usepackage[breton, breton]{babel}). Jeśli org-latex-export-dictionarywłączy się Breton , będzie on również działał w HTML. Jeśli Breton nie był obsługiwany przez Babel, i tak będzie działał, ale będzie w języku angielskim, więc ta konfiguracja daje ci tyle w określonym języku, ile to możliwe, z angielskim jako rezerwą. Wolę używać, AUTOjeśli jest dostępny, ponieważ jest tylko jedno miejsce na umieszczenie języka.

Jeśli nie podoba ci się to, co Babel określa jako „Treść”, ale nadal chcesz z niego korzystać, możesz zrobić coś takiego:

#+LANGUAGE: en
#+LATEX_HEADER: \usepackage[AUTO]{babel}
#+LATEX_HEADER: \addto\captionsenglish{\renewcommand\contentsname{Outline}}

To jest jak odpowiedź Tylera, ale dla Babel.

René
źródło
Dzięki! Działa w przypadku standardowego eksportu pdf, ale nie działa z eksportem slajdów Beamer.
foki,
4

Jeśli eksportujesz do formatu PDF, tryb organizacji wywoła LaTeX w celu wykonania konwersji. W takim przypadku powinno być możliwe wstawienie polecenia LaTeX w celu zmiany nagłówka spisu treści za pomocą następującego wiersza:

#+LATEX_HEADER: \renewcommand*{\contentsname}{My Table of Contents Header}

Umieść to na górze pliku i spróbuj wyeksportować.

Tyler
źródło
Obecnie nie mam ustawionego środowiska LATEX, więc nie mogę wypróbować go w formacie PDF. Teraz chcę wyeksportować do ODT i HTML, aby polecenie LATEX tutaj nie pomogło (powiedz, czy się mylę).
foki
1
Podczas eksportowania do LaTeX, lepiej użyj własnej obsługi języków przez LaTeX \usepackage[mylanguage]{babel}.
JeanPierre
@JeanPierre Właśnie zauważyłem dziwne zachowanie. Podejście Tylera nie działają na mnie, ale zachowanie przejawia użyciu Jeanpierre jest jeszcze bardziej interesujące - zarówno ja zadeklarowały, #+LANGUAGE: fri #+LATEX_HEADER: \usepackage[english]{babel}w tym przypadku szanuje eksportu Latex Pierwsze ustawienie i tłumaczy ciągi we francuskich odpowiedników. Jeśli zadeklaruję dew pierwszym i / frenchlub frenchbw drugim - dejest używany. Zauważyłem również, że w opisanych przypadkach eksporter nie używa org-export-dictionary, bardziej prawdopodobne jest, że używa języków lateksowych. Masz pomysł?
foki
@foki przepraszam, brakowało mi dwukropka :. Poprawiłem swoją odpowiedź.
Tyler
2
Dziwne, jeśli używam #+LANGUAGE: frsamodzielnie, jest ignorowane - wyjście LaTeX jest w języku angielskim. Jeśli go #+LATEX_HEADER: \usepackage[english]{babel}użyję, i powstały LaTeX zawiera linię \usepackage[english, frenchb]{babel}. A jeśli używam tylko #+LATEX_HEADER: \usepackage[french]{babel}, bez ustawiania LANGUAGE:, to, co faktycznie zostanie wstawione, to \usepackage[frenchb, english]{babel}. Żaden z nich nie zmienia pliku PDF, zawsze jest w języku angielskim.
Tyler
0

Krótka odpowiedź: w przypadku eksportu pdf wymagany jest pakiet texlive-lang-french

org 9.1.9: Samo ustawienie #+LANGUAGE: frnie ma wpływu.

spraw, by tak się stało

#+LATEX_HEADER: \usepackage[frenchb]{babel}

lub

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
Krzemień
źródło