Alterar o título do sumário no modo Org, de acordo com o idioma do documento

14

Existe uma opção que altera o título padrão do sumário no modo Org?
Meu documento não está em inglês, por isso quero traduzir o título da tabela de conteúdo.


Responda

Como JeanPierre disse, trata-se de configurações de exportação. Você pode definir LANGUAGEna parte superior do orgdocumento da seguinte maneira:

#+LANGUAGE: fr

E o francês será usado como idioma padrão de todas as strings orgproduzidas durante a exportação.
A constante responsável por mapeamentos de tradução é org-export-dictionaryem ox.ele se o seu idioma não é suportado você pode soltá-lo lá e, em seguida, eval-defundeixar que a mudança ocorra. No meu caso:

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

Eu escrevi uma função ingênua que pode ser útil em 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")

aviso Legal

Não funciona se você deseja exportar via Látex (o Látex é usado quando a Org exporta para PDF). Veja a resposta e os comentários de Tyler.

foki
fonte
Para qual formato você está exportando? PDF, html ou?
Tyler
@ TylerI Estou exportando principalmente para ODT e HTML.
foki 27/03

Respostas:

3

O manual organizacional diz isso sobre as configurações de exportação (você deve poder navegá-lo nas informações do emacs C-h i m Org m exporting):

'LÍNGUA'

O idioma usado para traduzir algumas strings ('org-export-default-language'). Por exemplo, '# + IDIOMA: fr' dirá à Org para traduzir File (inglês) para Fichier (francês) na tabela de horários.

Eu não tentei, mas espero que faça o que você deseja.

Jean Pierre
fonte
1
Não é suficiente para todos os exportadores. Para as exportações de látex, convém consultar a resposta @ rené.
Jocelyn delalande
9

Como apontou a resposta JeanPierre, você precisa especificar a configuração de exportação do idioma. Para o francês, a próxima linha faz o trabalho:

#+LANGUAGE: fr

Nem todos os idiomas são suportados e, como você disse, é possível ver quais estão visualizando a org-latex-export-dictionaryvariável (você pode usar o comando emacs e C-h vdepois escrever o nome da variável). Alguns idiomas podem ser apenas parcialmente suportados ou não, como o sérvio. Se você deseja que ele funcione com um idioma não suportado, adicione as strings traduzidas à variável e, de preferência, envie-as para os desenvolvedores, para que acabem no modo organizacional.

LaTex e PDF

Se você estiver exportando para o LaTex e quiser deixar o Babel alterar o texto, use:

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

Isso funcionará tanto em HTML quanto em látex, pois a palavra-chave AUTO será substituída pelo nome do idioma Babel correspondente. Para visualizar quais idiomas são suportados, visualize a org-latex-babel-language-alistvariável Nem todos os idiomas disponíveis em Babel estão lá, mas o sérvio está e funciona (teste-o e "Conteúdo" aparece como "Sadržaj").

Se seu idioma não estiver, org-latex-babel-language-alistmas estiver disponível em babel, como bretão, use:

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

Como Breton não está na org-latex-export-dictionarya LANGUAGEvariável não vai fazer nada para exportação HTML, será em Inglês, mas é necessário. Isso ocorre porque o que terminará no arquivo LaTex será \usepackage[breton, <default-lang>]{babel}onde default-langestará o inglês, se LANGUAGEnão estiver presente, e o último idioma for considerado o padrão por Babel. Como brnão org-latex-babel-language-alistterminamos \usepackage[breton, ]{babel}, o Breton é o padrão.

Se o Breton for adicionado, org-latex-babel-language-alistele funcionará de qualquer maneira ( \usepackage[breton, breton]{babel}). Se o Breton estiver incluído org-latex-export-dictionary, agora também funcionará em HTML. Se o Breton não for suportado pelo babel, ele funcionará de qualquer maneira, mas será em inglês; portanto, é essa configuração que fornece o máximo de idiomas possível no idioma especificado com o inglês. Prefiro usar AUTOse disponível, pois existe apenas um lugar para colocar o idioma.

Se você não gosta do que Babel coloca como "Conteúdo", mas ainda deseja usá-lo, pode fazer algo como:

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

É como a resposta de Tyler, mas para Babel.

René
fonte
Obrigado! Ele funciona para exportação padrão de pdf, mas não funciona com a exportação de slides do Beamer.
Foki 11/04/16
4

Se você estiver exportando para PDF, o modo organizacional chamará o LaTeX para fazer a conversão. Nesse caso, você poderá inserir o comando LaTeX para alterar o cabeçalho do sumário com a seguinte linha:

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

Coloque isso na parte superior do seu arquivo e tente a exportação.

Tyler
fonte
No momento, não tenho o ambiente LATEX definido, então não posso experimentá-lo com PDF. Agora eu quero exportar para ODT e HTML para que o comando LATEX não ajude aqui (diga-me se estou errado).
foki 27/03
1
Ao exportar para o LaTeX, é melhor usar o próprio processamento de idiomas do LaTeX \usepackage[mylanguage]{babel}.
JeanPierre
@JeanPierre Acabei de perceber um comportamento estranho. A abordagem de Tyler não funciona para mim, mas o comportamento manifestado usando o de JeanPierre é ainda mais interessante - eu declarei os dois #+LANGUAGE: fre , #+LATEX_HEADER: \usepackage[english]{babel}nesse caso, a exportação de látex respeita a primeira configuração e traduz seqüências de caracteres em contrapartes francesas. Se eu declaro deno primeiro e / frenchou frenchbno segundo - deé usado. Também notei que, nos casos descritos, o exportador não usa org-export-dictionary, mais provavelmente ele usa idiomas de látex. Tem alguma ideia?
foki 30/03/16
@ Foki desculpe, estava faltando dois pontos :. Eu corrigi minha resposta.
Tyler
2
Estranho, se eu usar #+LANGUAGE: frpor conta própria, será ignorado - a saída LaTeX é em inglês. Se eu usá-lo e #+LATEX_HEADER: \usepackage[english]{babel}, o LaTeX resultante inclui a linha \usepackage[english, frenchb]{babel}. E se eu usar apenas #+LATEX_HEADER: \usepackage[french]{babel}, sem definir LANGUAGE:, o que realmente é inserido é \usepackage[frenchb, english]{babel}. Nenhum deles altera o PDF, é sempre inglês.
Tyler
0

Resposta curta: para exportação de pdf, é necessário o pacote texlive-lang-french

org 9.1.9: Definir #+LANGUAGE: frsozinho não tem efeito.

fazer acontecer com

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

ou

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