Змініть заголовок вмісту в режимі Org відповідно до мови документа


14

Чи є опція, яка змінює за замовчуванням заголовок змісту в режимі Org?
Мій документ не англійською мовою, тому я хочу перекласти назву змісту.


Відповідь

Як сказав ЖанП'єрре, мова йде про налаштування експорту. Ви можете встановити LANGUAGEвгорі orgдокумента таким чином:

#+LANGUAGE: fr

І французька мова буде використовуватися як мова за замовчуванням для всіх рядків, що orgстворюються під час експорту.
Постійна відповідальність за відображень перекладацьких org-export-dictionaryв ox.elі якщо ваш язик не підтримується ви можете залишити його там , а потім , eval-defunщоб змінити місце. У моєму випадку:

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

Я написав наївну функцію, яка може бути корисною для 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")

Відмова від відповідальності

Він не працює, якщо потрібно експортувати через Latex (Latex використовується при експортуванні Org у PDF). Подивіться на відповідь та коментарі Тайлера.


У який формат ви експортуєте? PDF, html або?
Тайлер

@TylerI Я експортую в основному ODT та HTML.
foki

Відповіді:


3

Посібник з Org говорить про налаштування експорту (ви маєте можливість переглядати його в інформації про emacs C-h i m Org m exporting):

'МОВУ'

Мова, що використовується для перекладу деяких рядків ('org-export-default-language'). Наприклад, "# + МОВА: fr" скаже Org перевести Файл (англійською мовою) на Fichier (французькою мовою) в такт.

Я не пробував цього, але, напевно, він повинен робити те, що ти хочеш.


1
Недостатньо для всіх експортерів, для експорту латексу ви можете подивитися на відповідь @ rené.
Jocelyn delalande

10

Як відповів ЖанП'єрре, вам потрібно вказати налаштування експорту мови. Для французької мови працює наступний рядок:

#+LANGUAGE: fr

Не всі мови підтримуються, і, як ви вже сказали, можна побачити, які з них переглядають org-latex-export-dictionaryзмінну (ви можете скористатися командою emacs, C-h vа потім написати ім'я змінної). Деякі мови можуть бути лише частково підтримувані або зовсім не підтримуються, як сербська. Якщо ви хочете, щоб вона працювала з непідтримуваною мовою, додайте перекладені рядки до змінної та, бажано, надішліть їх до дискав, щоб вона закінчилася org-mode.

LaTex і PDF

Якщо ви експортуєте в LaTex і хочете дозволити Babel змінити використання тексту:

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

Це буде працювати як в HTML, так і в латексі, оскільки ключове слово AUTO буде замінено відповідним іменем мови Babel. Щоб переглянути, які мови підтримуються, перегляньте org-latex-babel-language-alistзмінну. Не всі мови є на вавілонській мові, але сербська є і працює (протестовано її, а "Зміст" з'являється як "Sadržaj").

Якщо у вашій мові немає, org-latex-babel-language-alistале вона доступна на вавілонській мові , як-от бретонська, використовуйте:

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

Оскільки Бретон не знаходиться org-latex-export-dictionaryв LANGUAGEзмінній, нічого не зробить для експорту HTML, це буде англійською мовою, але це необхідно. Це тому , що в кінцевому підсумку в файлі LaTex буде \usepackage[breton, <default-lang>]{babel}де default-langбуде англійська , якщо LANGUAGEнемає і останній мова вважається за замовчуванням Бабелем. Як brце не в org-latex-babel-language-alistнас, в кінцевому підсумку \usepackage[breton, ]{babel}, там Бретон за замовчуванням.

Якщо до org-latex-babel-language-alistнього додано Бретон, він все одно запрацює ( \usepackage[breton, breton]{babel}). Якщо до нього включено Бретон, org-latex-export-dictionaryвін тепер також працюватиме в HTML. Якщо бретон не підтримувався babel, він все одно буде працювати, але буде англійською мовою, тож ця конфігурація надає вам якомога більше в зазначеній мові з англійською мовою, як відступ. Я скоріше використовую, AUTOякщо є, оскільки є лише одне місце, щоб розмістити мову.

Якщо вам не подобається те, що Babel ставить як "Зміст", але все ж хочете використовувати його, ви можете зробити щось на кшталт:

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

Це як відповідь Тайлера, але для Вавилона.


Спасибі! Він працює для стандартного експорту в PDF, але не працює з експортом слайдів Beamer.
foki

4

Якщо ви експортуєте в PDF, org-режим буде викликати LaTeX для перетворення. У такому випадку вам слід мати змогу вставити команду LaTeX, щоб змінити заголовок TOC наступним рядком:

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

Помістіть це у верхній частині свого файлу та спробуйте експортувати.


Наразі у мене не встановлено середовище LATEX, тому я не можу спробувати його з PDF. Тепер я хочу експортувати в ODT та HTML, щоб команда LATEX тут не допомагала (скажіть, чи я помиляюся).
foki

1
Експортуючи до LaTeX, краще використовувати власне поводження з мовами LaTeX \usepackage[mylanguage]{babel}.
ЖанП'єр

@JeanPierre Я щойно помітив дивну поведінку. Підхід Тайлер не працює для мене, але поведінка проявляється з допомогою JeanPierre є ще більш цікавим - я оголосив як, #+LANGUAGE: frі #+LATEX_HEADER: \usepackage[english]{babel}в цьому випадку експорт Latex Поважає першу установку і переводить рядок у французьких колег. Якщо я заявляю deв першому, frenchабо frenchbв другому - deвикористовується. Я також помітив, що в описаних випадках експортер не використовує org-export-dictionary, швидше за все, він використовує латексні мови. Маєте якусь ідею?
foki

@foki вибачте, мені не вистачало двокрапки :. Я виправив свою відповідь.
Тайлер

2
Дивно, якщо я використовую #+LANGUAGE: frсамостійно, це ігнорується - вихід LaTeX англійською мовою. Якщо я його використовую і #+LATEX_HEADER: \usepackage[english]{babel}, отриманий LaTeX включає рядок \usepackage[english, frenchb]{babel}. І якщо я використовую лише #+LATEX_HEADER: \usepackage[french]{babel}без встановлення LANGUAGE:, те, що насправді вставляється, - це \usepackage[frenchb, english]{babel}. Жоден з них не змінює PDF-файл, це завжди англійська мова.
Тайлер

0

Коротка відповідь: для експорту PDF потрібен пакет texlive-lang-french

org 9.1.9: Налаштування #+LANGUAGE: frсамостійно не впливає.

зробити це з

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

або

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.