Modifier le titre de la table des matières en mode Org selon la langue du document

14

Existe-t-il une option qui modifie le titre par défaut de la table des matières en mode Org?
Mon document n'est pas en anglais, donc je veux traduire le titre de la table des matières.


Répondre

Comme l'a dit JeanPierre, il s'agit de paramètres d'exportation. Vous pouvez définir LANGUAGEen haut de votre orgdocument de cette façon:

#+LANGUAGE: fr

Et le français sera utilisé comme langue par défaut de toutes les chaînes orgproduites lors de l'exportation.
La constante responsable des correspondances de traduction est org-export-dictionarydans ox.elet si votre langue n'est pas pris en charge , vous pouvez y déposer et eval-defunde laisser le changement se produit. Dans mon cas:

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

J'ai écrit une fonction naïve qui peut être utile dans 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")

Avertissement

Cela ne fonctionne pas si vous souhaitez exporter via Latex (Latex est utilisé lorsque Org exporte au format PDF). Regardez la réponse et les commentaires de Tyler.

foki
la source
Vers quel format exportez-vous? PDF, html ou?
Tyler
@TylerI J'exporte principalement vers ODT et HTML.
foki

Réponses:

3

Le manuel de l'organisation dit ceci à propos des paramètres d'exportation (vous devriez pouvoir le parcourir dans les informations emacs C-h i m Org m exporting):

'LANGUE'

Langue utilisée pour traduire certaines chaînes («org-export-default-language»). Par exemple, '# + LANGUAGE: fr' dira à Org de traduire File (english) en Fichier (french) dans la table d'horloge.

Je ne l'ai pas essayé mais je m'attends à ce qu'il fasse ce que vous voulez.

Jean Pierre
la source
1
Pas suffisant pour tous les exportateurs, pour les exportations de Latex, vous pouvez consulter la réponse @ rené.
Jocelyn delalande
10

Comme l'a indiqué la réponse de JeanPierre, vous devez spécifier le paramètre d'exportation de la langue. Pour le français, la ligne suivante fait le travail:

#+LANGUAGE: fr

Toutes les langues ne sont pas prises en charge et, comme vous l'avez dit, il est possible de voir lesquelles affichent la org-latex-export-dictionaryvariable (vous pouvez utiliser la commande emacs C-h vpuis écrire le nom de la variable). Certaines langues peuvent être prises en charge partiellement ou pas du tout comme le serbe. Si vous voulez qu'il fonctionne avec une langue non prise en charge, ajoutez les chaînes traduites à la variable et envoyez-les de préférence aux développeurs afin qu'elle se termine en mode org.

LaTex et PDF

Si vous exportez vers LaTex et souhaitez laisser Babel changer l'utilisation du texte:

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

Cela fonctionnera à la fois en HTML et en latex car le mot-clé AUTO sera remplacé par le nom de langage Babel correspondant. Pour afficher les langues prises en charge, consultez la org-latex-babel-language-alistvariable. Toutes les langues disponibles à Babel ne sont pas là mais le serbe est et fonctionne (testé et "Contents" apparaît comme "Sadržaj").

Si votre langue n'est pas en org-latex-babel-language-alistmais est disponible en babel, comme le breton, utilisez:

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

Comme Breton n'est pas dans org-latex-export-dictionaryla LANGUAGEvariable, il ne fera rien pour l'exportation HTML, il sera en anglais, mais c'est nécessaire. C'est parce que ce qui se retrouvera dans le fichier LaTex sera \usepackage[breton, <default-lang>]{babel}default-langsera l'anglais s'il LANGUAGEn'est pas présent et la dernière langue est considérée par défaut par Babel. Comme ce brn'est pas le cas, org-latex-babel-language-aliston se retrouve avec \usepackage[breton, ]{babel}, il y a du breton par défaut.

Si Breton est ajouté, org-latex-babel-language-alistcela fonctionnera quand même ( \usepackage[breton, breton]{babel}). Si Breton est inclus, org-latex-export-dictionaryil fonctionnera désormais également en HTML. Si le breton n'était pas pris en charge par babel, cela fonctionnera de toute façon mais sera en anglais, donc cette configuration est celle qui vous donne autant dans la langue spécifiée que possible avec l'anglais comme alternative. J'utilise plutôt AUTOsi disponible car il n'y a qu'un seul endroit pour mettre la langue.

Si vous n'aimez pas ce que Babel met en tant que "Contenu" mais que vous souhaitez toujours l'utiliser, vous pouvez faire quelque chose comme:

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

C'est comme la réponse de Tyler mais pour Babel.

René
la source
Merci! Il fonctionne pour l'exportation PDF standard mais ne fonctionne pas avec l'exportation de diapositives Beamer.
foki
4

Si vous exportez au format PDF, le mode organisationnel appellera LaTeX pour effectuer la conversion. Dans ce cas, vous devriez pouvoir insérer la commande LaTeX pour modifier l'en-tête de la table des matières avec la ligne suivante:

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

Mettez cela en haut de votre fichier et essayez l'exportation.

Tyler
la source
Je n'ai actuellement pas d'environnement LATEX défini, je ne peux donc pas l'essayer avec PDF. Maintenant, je veux exporter vers ODT et HTML, donc la commande LATEX n'aide pas ici (dites-moi si je me trompe).
foki
1
Lors de l'exportation vers LaTeX, vous feriez mieux d'utiliser la propre gestion des langues par LaTeX \usepackage[mylanguage]{babel}.
JeanPierre
@JeanPierre Je viens de remarquer un comportement étrange. L'approche de Tyler ne fonctionnent pas pour moi, mais le comportement manifesté USING est encore plus intéressant de JeanPierre - je l' ai déclaré à la fois, #+LANGUAGE: fret #+LATEX_HEADER: \usepackage[english]{babel}dans ce cas latex respecte l' exportation le premier paramètre et se traduit par des chaînes en français homologues. Si je déclare dedans le premier et frenchou frenchbdans le second - deest utilisé. J'ai également remarqué que dans les cas décrits, l'exportateur n'utilise pas org-export-dictionary, plus probablement il utilise des langages Latex. Vous avez une idée?
foki
@foki désolé, je manque deux points :. J'ai corrigé ma réponse.
Tyler
2
Étrange, si j'utilise #+LANGUAGE: frseul, il est ignoré - la sortie LaTeX est en anglais. Si je l'utilise et #+LATEX_HEADER: \usepackage[english]{babel}, le LaTeX résultant inclut la ligne \usepackage[english, frenchb]{babel}. Et si j'utilise seulement #+LATEX_HEADER: \usepackage[french]{babel}, sans réglage LANGUAGE:, ce qui est réellement inséré est \usepackage[frenchb, english]{babel}. Aucun d'eux ne change le PDF, c'est toujours l'anglais.
Tyler
0

Réponse courte: pour les exportations pdf, le package texlive-lang-french est requis

org 9.1.9: Le réglage #+LANGUAGE: frseul n'a aucun effet.

y arriver avec

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

ou

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