Exportieren von Unicode-Zeichen in PDF mithilfe von Latex aus dem Organisationsmodus

15

Hallo gute Leute von Emacs!

Ich habe Probleme beim Exportieren von Unicode-mathematischen Symbolen aus dem Puffer (org-mode) in eine PDF-Datei.

1. Problembeschreibung:

Symbole werden als Unicode-Zeichen in den Puffer eingefügt (über die TEX-Eingabemethode oder Firmenmathematik )

Hier ist eine Demonstration des Quellcodes:

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

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

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

Produzierte .tex-Datei enthält Unicode-Symbole:

% 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}

PDF-Datei funktioniert nicht:

Bildbeschreibung hier eingeben

2. Dinge, die ich bisher ausprobiert habe:

Xelatex und Unicode-Mathematik: Dies ist in der Antwort von Rasmus enthalten. Hier muss ich zugeben: Ich verwende keine von ihm erwähnte Entwicklungsversion von org-mode. (konnte nicht installiert werden) Ich habe es trotzdem mit xelatex und Unicode-Mathe versucht. Meine Version des Org-Modus ist 8.2.10.

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

Wenn Sie dies in die Datei aufnehmen, erhalten Sie eine nicht so schöne Nachricht, sondern eine PDF-Datei.

org-latex-compile: PDF-Datei ./unicode_export_test.pdf wurde nicht erstellt: [package error]

Ich habe die korrekte Installation von Unicode-Mathematik überprüft:

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

Die Installation von Xelatex ist die neueste 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.

Installieren Sie die Entwicklungsversion von org-mode: (fehlgeschlagen) Folgen Wie halte ich mich über die Entwicklung auf dem Laufenden? - Tutorial Ich konnte es (glaube ich) herunterladen und kompilieren. Da ich keine Ahnung habe, wie Emacs diese Version ausführen soll, führt Emacs die Version 8.2.10 im Org-Modus aus (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). Ich habe versucht, meiner Konfiguration folgende Zeilen hinzuzufügen.

(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)

Ohne erfreuliches Ergebnis.

Internet durchsuchen: Lösung wurde nicht gefunden.

Ich habe mich selbst geschlagen, weil ich dumm war. Hat nicht geholfen.

3. Frage: Wie exportiere ich Unicode-Zeichen von org-mode nach pdf?

  • Muss ich eine Organisationsvariable konfigurieren?
  • Mit anderem Latexinterpreter kompilieren?
  • Irgendwelche anderen Ideen?
  • Wenn die Entwicklungsversion dies behebt ... Wie kann ich es installieren?
Empty_Mind
quelle
Könnten

Antworten:

9

Sie müssen die Latexdatei verwenden, \usepackage[utf8x]{inputenc}anstatt die Standarddatei zu verwenden \usepackage[utf8]{inputenc}. Dies funktioniert mit Standard (pdf) Latex.

Damit der org-Export dies erzeugt, müssen Sie die Variable org-latex-inputenc-alistentsprechend einstellen . Beispielsweise:

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

Damit die Variable definiert werden kann, müssen Sie möglicherweise (require 'ox-latex)zuerst.

Leider unterstützt dies nur einen begrenzten Satz mathematischer Buchstaben. Viel mehr kann durch Einbeziehung unterstützt werden \usepackage[mathletters]{ucs}. Dies muss vor dem inputencZeugs stehen, damit Sie nicht einfach a verwenden können #+latex_header:. Eine Möglichkeit, dies zu tun, besteht darin, es an der Spitze von hinzuzufügen org-latex-default-packages-alist.

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

Beachten Sie, dass die ucsDokumentation (normalerweise verfügbar über texdoc ucs) vor der mathlettersOption warnt :

Diese Option ist standardmäßig deaktiviert, da die Verwendung von Mathe-Griechisch in einem normalen Text nicht gut aussieht.

Wenn diese Einstellungen nicht global, sondern nur für die aktuelle Datei gelten sollen, können Sie sie als lokale Dateivariablen definieren . Fügen Sie am Ende der Datei Folgendes hinzu:

# 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 ist eine Pseudovariable, mit der beim Laden der Datei Lisp-Code ausgeführt werden kann.

Jean Pierre
quelle
Symbole Ω Θ Γ ωwerden nicht exportiert. Es wird mehr Symbole geben, die nicht exportiert werden.
Empty_Mind
@Empty_Mind Oh mein Gott. Wahrscheinlich war dies zu einfach, um wirklich zu funktionieren (obwohl es für das bereitgestellte Beispiel in Ordnung ist). Benötigt mehr Nachforschungen auf der Latexseite.
JeanPierre
@Empty_Mind Habe gerade meinen Beitrag bearbeitet. Versuchte nur Omega und Theta, hoffe andere Arbeit auch.
JeanPierre
Da ich dies selbst nicht konnte: Wie haben Sie die notwendigen Informationen gefunden? Wonach haben Sie gesucht?
Empty_Mind
2
@Empty_Mind Der erste Schritt war, das Latexteil zum Laufen zu bringen. Ich habe bei tex.stackexchange nach Unicode gesucht und dann die lokale tex-Dokumentation (inputenc, ucs) verwendet. Es ist praktisch, die von org exportierte Tex-Datei direkt zu bearbeiten und zum Ausprobieren zu kompilieren. Sobald Sie eine funktionierende Latex-Datei erhalten haben, müssen Sie org veranlassen, die benötigten Daten zu exportieren. Ich habe Informationen zu den Variablen in der Datei gefunden, ox-latex.elin der die "LaTeX-Back-End für Org-Export-Engine" definiert ist. Sollte ich erwähnen, dass ich 1995 zum ersten Mal Latex verwendet habe und langsam auf Unicode umsteige?
JeanPierre
5

Sie müssen lediglich die richtige Unicode-Unterstützung in LaTeX über unicode-mathund laden fontspec. Dann müssten Sie mit xelatexoder kompilieren lualatex.

Siehe das docstring der folgenden Variablen: org-latex-packages-alist, org-latex-pdf-processund org-latex-compiler(letzteres ist eingeführt in Org 9).

In der Entwicklungsversion von Org könnten Sie so etwas tun:

#+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}

org-mode Kompilieren von Latexdokumenten mit Unicode-Symbolen

Rasmus
quelle
Das sieht vielversprechend aus. Aber ich habe Process completed with errors: [package error] Ideen, wie ich das beheben kann, oder eine genauere Fehlerbeschreibung?
Empty_Mind
Wie kann ich die Entwicklungsversion installieren?
Empty_Mind
2

Zwei Möglichkeiten:

1) Schreiben Sie entweder richtige TeX-Ausdrücke (anstelle von Unicode) und lassen Sie org sie einfach als utf-8-Zeichen (mit ) anzeigenC-c C-x \ . http://orgmode.org/manual/Special-symbols.html

Oder 2) Laden Sie ein TeX-Paket, das Ihre utf-8-Zeichen in die richtigen mathematischen Ausdrücke übersetzt. Zum Beispiel https://www.ctan.org/pkg/unicode-math?lang=de .

Dieter.Wilhelm
quelle
1
ad 2) Wie lade ich das TeX-Paket?
Empty_Mind
@Empty_Mind #+latex_header: \usepackage{unicode-math}. Aber dieses Paket funktioniert bei mir nicht.
JeanPierre