根据文档语言在组织模式下更改目录标题


14

是否有一个选项可以在组织模式下更改目录的默认标题?
我的文档不是英语,所以我想翻译目录标题。


回答

正如JeanPierre所说,这与导出设置有关。您可以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导出,则无法使用(在组织导出为PDF时会使用Latex)。看一下泰勒的回答和评论。


您要导出到什么格式?PDF,html还是?
泰勒

@TylerI我主要导出到ODT和HTML。
2016年

Answers:


3

组织手册说明了有关导出设置的内容(您应该可以在emacs info中对其进行浏览C-h i m Org m exporting):

'语言'

用于翻译某些字符串的语言(“ org-export-default-language”)。例如,“#+ LANGUAGE:fr”将告诉Org在时钟表中将File(英语)翻译成Fichier(法语)。

我还没有尝试过,但我希望它可以做您想要的。


1
对于所有出口商而言,这还不够,对于乳胶出口,您可能需要查看@rené答案。
Jocelyn delalande '16

10

正如JeanPierre回答所指出的,您需要指定语言导出设置。对于法语,下一行可以完成工作:

#+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变量。并非所有Babel语言都可用,但塞尔维亚语是可行的(经过测试,“目录”显示为“Sadržaj”)。

如果您的语言不在,org-latex-babel-language-alist但可以使用通天塔语,例如Br​​eton,请使用:

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

随着布雷顿是不是在org-latex-export-dictionaryLANGUAGE变量不会做HTML出口任何东西,这将是英文的,但是是必要的。这是因为什么会在乳胶文件最终会\usepackage[breton, <default-lang>]{babel}在那里default-lang为英语,如果LANGUAGE不存在,并且最后的语言被认为是由巴别塔的默认。由于br不是org-latex-babel-language-alist这样\usepackage[breton, ]{babel},所以默认是Breton。

如果添加了Breton,org-latex-babel-language-alist它仍然可以工作(\usepackage[breton, breton]{babel})。如果包含Breton org-latex-export-dictionary,则现在也可以使用HTML。如果babel不支持Breton,它将仍然可以工作,但只能使用英语,因此,这种配置可以为您提供尽可能多的使用指定语言的服务,并以英语作为后备。我宁愿使用(AUTO如果有的话),因为只有一种放置语言的地方。

如果您不喜欢Babel所说的“内容”,但仍然想使用它,则可以执行以下操作:

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

这就像泰勒的答案,只是对巴别塔而言。


谢谢!它适用于标准pdf导出,但不适用于Beamer幻灯片导出。
foki 2016年

4

如果要导出为PDF,则组织模式将调用LaTeX进行转换。在这种情况下,您应该能够插入LaTeX命令以使用以下行更改TOC标题:

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

将其放在文件顶部,然后尝试导出。


我目前没有设置LATEX环境,因此无法在PDF中尝试。现在我想导出到ODT和HTML,所以LATEX命令在这里没有帮助(如果我错了,请告诉我)。
2016年

1
导出到LaTeX时,最好使用LaTeX自己的语言处理\usepackage[mylanguage]{babel}
JeanPierre 2016年

@JeanPierre我刚刚注意到一种奇怪的行为。泰勒的做法并不为我工作,但使用JeanPierre的是更有趣的行为表现-我已经宣布双方,#+LANGUAGE: fr#+LATEX_HEADER: \usepackage[english]{babel}在这种情况下乳胶出口方面与第一设置和法国同行翻译字符串。如果我de在第一个frenchfrenchb第二个中声明- de使用。我还注意到,在描述的情况下,导出器不使用org-export-dictionary,更有可能使用了Latex语言。有什么主意吗
2016年

@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,它始终是英文。
泰勒(Tyler)2016年

0

简短的回答:对PDF导出,包的texlive琅法国需要

org 9.1.9#+LANGUAGE: fr单独设置 无效。

使它与

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

要么

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.