Exportation de caractères Unicode au format PDF à l'aide de latex depuis le mode org

15

Bonjour les bons gens d'Emacs!

J'ai du mal à exporter des symboles mathématiques unicode du tampon (mode org) vers un fichier pdf.

1. Description du problème:

Les symboles sont insérés dans le tampon sous forme de caractères Unicode (via la méthode de saisie TEX ou les mathématiques de l'entreprise )

Voici une démonstration du code source:

#+TITLE: Unicode characters export test 
#+AUThor: 
#+date:
Unicode characters:

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

$$\Bbb{R} \Bbb{Z} \Bbb{N} \Rightarrow \in \forall$$

Le fichier .tex produit comprend des symboles Unicode:

% Created 2016-03-04 Pá 21:01
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{amssymb}
\usepackage{hyperref}
\tolerance=1000
\date{}
\title{Unicode characters export test}
\hypersetup{
  pdfkeywords={},
  pdfsubject={},
  pdfcreator={Emacs 24.4.1 (Org mode 8.2.10)}}
\begin{document}

\maketitle
\tableofcontents

Unicode characters:

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

$$\Bbb{R} \Bbb{Z} \Bbb{N} \Rightarrow \in \forall$$
% Emacs 24.4.1 (Org mode 8.2.10)
\end{document}

Le fichier PDF ne:

entrez la description de l'image ici

2. Ce que j'ai essayé jusqu'à présent:

Xelatex et unicode-math: Ceci est inclus dans la réponse de Rasmus. Ici, je dois admettre: je n'utilise pas la version de développement du mode org qu'il mentionne. (échec de l'installation) J'ai quand même essayé xelatex adn unicode-math. Ma version du mode Org est la 8.2.10.

#+latex_compiler: xelatex
#+latex_header: \usepackage{libertine}
#+latex_header: \usepackage{unicode-math}

L'inclusion de ce fichier dans le fichier introduit un message pas si agréable à la place.

org-latex-compile: le fichier PDF ./unicode_export_test.pdf n'a pas été produit: [erreur de package]

J'ai vérifié l'installation correcte d'Unicode-math:

~ $ kpsewhich unicode-math.sty
/usr/share/texlive/texmf-dist/tex/latex/unicode-math/unicode-math.sty

L'installation de Xelatex est la dernière version:

~ $ sudo apt-get install texlive-xetex
Reading package lists... Done
Building dependency tree       
Reading state information... Done
texlive-xetex is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 16 not upgraded.

installer la version de développement de org-mode: (échoué) Suite Comment puis-je me tenir au courant du développement de pointe? - tutoriel J'ai pu (je pense) le télécharger et le compiler. Comme je ne sais pas comment dire à Emacs d'exécuter cette version, Emacs exécute la version 8.2.10 en mode Org (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). J'ai essayé d'ajouter des lignes suivantes à ma configuration.

(add-to-list 'load-path (expand-file-name "~/elisp/org-mode/lisp"))
(remove 'load-path (expand-file-name "/usr/local/share/emacs/24.4/lisp/org/"))
(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
(require 'org)

Sans résultat agréable.

Recherche sur Internet: la solution est introuvable.

Se battre pour être stupide: n'a pas aidé.

3. Question: Comment exporter des caractères Unicode du mode org vers pdf?

  • Dois-je configurer une variable de mode organisationnel?
  • Compiler avec différents interprètes Latex?
  • D'autres idées?
  • Si la version de développement corrige cela .... Comment puis-je l'installer?
Un esprit vide
la source
pourriez-vous s'il vous plaît fournir un exemple en texte
brut

Réponses:

9

Vous avez besoin du fichier latex à utiliser \usepackage[utf8x]{inputenc}plutôt que celui par défaut \usepackage[utf8]{inputenc}. Cela fonctionne avec du latex standard (pdf).

Pour que l'export org le génère, vous devez définir la variable en org-latex-inputenc-alistconséquence. Par exemple:

(setq org-latex-inputenc-alist '(("utf8" . "utf8x")))

Pour que la variable soit définie, vous devrez peut-être d' (require 'ox-latex)abord.

Malheureusement, cela ne prend en charge qu'un ensemble limité de lettres mathématiques. Beaucoup plus peut être soutenu en incluant \usepackage[mathletters]{ucs}. Cela doit apparaître avant le inputenctruc, donc vous ne pouvez pas simplement utiliser un #+latex_header:. Une façon de le faire est de l'ajouter à la tête de org-latex-default-packages-alist.

(setq org-latex-default-packages-alist (cons '("mathletters" "ucs" nil) org-latex-default-packages-alist))

Notez que la ucsdocumentation (généralement disponible via texdoc ucs) met en garde contre l' mathlettersoption:

Cette option est désactivée par défaut, car l'utilisation de mathématiques grecques dans un texte normal ne semble pas bonne.

Si vous souhaitez que ces paramètres s'appliquent uniquement au fichier actuel plutôt que globalement, vous pouvez les définir en tant que variables locales de fichier . Ajoutez ce qui suit vers la fin du fichier:

# Local Variables:
# org-latex-inputenc-alist: (("utf8" . "utf8x"))
# eval: (setq org-latex-default-packages-alist (cons '("mathletters" "ucs" nil) org-latex-default-packages-alist))
# End:

eval est une pseudo variable permettant d'exécuter du code lisp lors du chargement du fichier.

Jean Pierre
la source
Les symboles Ω Θ Γ ωne sont pas exportés. En supposant qu'il y aura plus de symboles qui ne seront pas exportés.
Empty_Mind
@Empty_Mind Oh mon Dieu. C'était probablement trop simple pour vraiment fonctionner (bien que ce soit correct dans l'exemple fourni). Nécessite plus d'investigation sur le côté latex.
JeanPierre
@Empty_Mind Je viens de modifier mon message. Essayé juste d'oméga et de thêta, j'espère que d'autres travaux aussi.
JeanPierre
Comme je n'ai pas pu le faire moi-même: comment avez-vous trouvé les infromations nécessaires? Que cherchiez-vous?
Empty_Mind
2
@Empty_Mind La première étape a été de faire fonctionner la pièce en latex. J'ai cherché unicode sur tex.stackexchange, puis j'ai utilisé la documentation tex locale (inputenc, ucs). Il est pratique de modifier directement le fichier tex exporté par org et de le compiler pour essayer les choses. Une fois que vous obtenez un fichier latex fonctionnel, la deuxième étape consiste à faire exporter par l'organisation les éléments nécessaires. J'ai trouvé des variables dans le fichier ox-latex.eloù le "moteur back-end LaTeX pour Org Export Engine" est défini. Dois-je mentionner que j'ai utilisé du latex pour la première fois en 1995 et que je passe lentement à l'unicode?
JeanPierre
5

Il vous suffirait de charger le support Unicode approprié dans LaTeX via unicode-mathet fontspec. Ensuite, vous devrez compiler avec xelatexou lualatex.

Voir la docstring des variables suivantes: org-latex-packages-alist, org-latex-pdf-processet org-latex-compiler(ce dernier est introduit dans Org 9).

Dans la version de développement d'Org, vous pouvez faire quelque chose comme ceci:

#+latex_compiler: xelatex
#+latex_header: \usepackage{libertine}
#+latex_header: \usepackage{unicode-math}

* Unicode symbols
 $z$ ∈ ℝ ∖ ℤ
\begin{equation}
\label{eq:1}
X ≔ \left\{ z\colon z ∈ ℝ ∖ ℤ \right\}
\end{equation}

mode org compilation de documents en latex avec symboles unicode

rasmus
la source
Cela semble prometteur. Mais je reçois des Process completed with errors: [package error] idées sur la façon de résoudre ce problème ou d'obtenir une description d'erreur plus spécifique?
Empty_Mind
Comment installer la version de développement?
Empty_Mind
2

Deux façons de procéder:

1) Soit écrivez des expressions TeX appropriées (au lieu d'unicode) et laissez org simplement les afficher en caractères utf-8 (avec C-c C-x \). http://orgmode.org/manual/Special-symbols.html

Ou 2) Chargez un package TeX qui traduit vos caractères utf-8 dans les expressions mathématiques appropriées. Par exemple https://www.ctan.org/pkg/unicode-math?lang=en .

Dieter.Wilhelm
la source
1
annonce 2) comment charger ce package TeX?
Empty_Mind
@Empty_Mind #+latex_header: \usepackage{unicode-math}. Mais ce package ne fonctionne pas pour moi.
JeanPierre