Изменить заголовок оглавления в режиме организации в соответствии с языком документа


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.
фоки

Ответы:


3

Руководство Org говорит об этом в настройках экспорта (вы должны иметь возможность просматривать его в информации emacs C-h i m Org m exporting):

«ЯЗЫК»

Язык, используемый для перевода некоторых строк ('org-export-default-language'). Например, '# + LANGUAGE: fr' скажет Org перевести File (english) на Fichier (французский) в таблице часов.

Я не пробовал это, но я ожидаю, что это должно делать то, что вы хотите.


1
Недостаточно для всех экспортеров, для экспорта латекса вы можете посмотреть ответ @ rené.
Джоселин Делаланде

10

Как указал ответ JeanPierre, вам нужно указать настройку языкового экспорта. Для французского языка работает следующая строка:

#+LANGUAGE: fr

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

LaTex и PDF

Если вы экспортируете в LaTex и хотите, чтобы Babel изменил текст, используйте:

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

Это будет работать как в HTML, так и в латексе, поскольку ключевое слово AUTO будет заменено соответствующим именем языка Babel. Для просмотра поддерживаемых языков просмотрите org-latex-babel-language-alistпеременную. Есть не все доступные в Вавилоне языки, но сербский есть и работает (проверил его, и «Содержание» отображается как «Садржай»).

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

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

Как Бретон не org-latex-export-dictionaryс LANGUAGEпеременным ничего для экспорта HTML не будет делать, это будет на английском языке, но это необходимо. Это потому, что в конечном итоге в файле LaTex будет место, \usepackage[breton, <default-lang>]{babel}где default-langбудет английский, если LANGUAGEего нет, а последний язык по умолчанию считается Babel. Как 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если доступно, так как есть только одно место, чтобы поставить язык.

Если вам не нравится то, что Бабель называет «контентом», но вы все еще хотите его использовать, вы можете сделать что-то вроде:

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

Это как ответ Тайлера, но для Вавилона.


Благодарность! Он работает для стандартного экспорта в PDF, но не работает с экспортом слайдов Beamer.
фоки

4

Если вы экспортируете в PDF, org-mode будет вызывать LaTeX для конвертации. В этом случае вы сможете вставить команду LaTeX для изменения заголовка TOC со следующей строкой:

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

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


В настоящее время у меня не установлена ​​среда LATEX, поэтому я не могу попробовать ее в PDF. Теперь я хочу экспортировать в ODT и HTML, чтобы команда LATEX здесь не помогла (скажите, если я ошибаюсь).
Фоки

1
При экспорте в LaTeX лучше использовать собственную обработку языков в LaTeX \usepackage[mylanguage]{babel}.
JeanPierre

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

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