Exportar caracteres Unicode a PDF usando latex desde el modo org

15

Hola buenas personas de Emacs!

Tengo problemas para exportar símbolos matemáticos Unicode desde el búfer (modo org) a un archivo pdf.

1. Descripción del problema:

Los símbolos se insertan en el búfer como caracteres unicode (a través del método de entrada TEX o matemática de la compañía )

Aquí está la demostración del código fuente:

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

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

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

El archivo .tex producido incluye símbolos 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}

El archivo PDF no:

ingrese la descripción de la imagen aquí

2. Cosas que he probado hasta ahora:

Xelatex y matemática unicode: Esto se incluye en la respuesta de Rasmus. Aquí tengo que admitir: no estoy usando la versión de desarrollo del modo org que está mencionando. (no se pudo instalar) De todos modos, he intentado xelatex y unicode-math. Mi versión del modo Org es 8.2.10.

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

Incluir esto en el archivo introduce un mensaje no tan encantador en lugar de un archivo pdf.

org-latex-compile: el archivo PDF ./unicode_export_test.pdf no se produjo: [error del paquete]

He verificado la instalación correcta de matemáticas unicode:

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

La instalación de Xelatex es la versión más nueva:

~ $ 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.

instale la versión de desarrollo del modo org: (fallido) Siguiente ¿Cómo me mantengo al día con el desarrollo de última generación? - Tutorial que he podido (creo) descargarlo y compilarlo. Como no tengo idea de cómo decirle a Emacs que ejecute esta versión, Emacs ejecuta la versión 8.2.10 del modo Org (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). He intentado agregar las siguientes líneas a mi configuración.

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

Sin resultado agradable.

Buscando en Internet: no se encontró la solución.

Golpeándome por ser estúpido: no ayudó.

3. Pregunta: ¿Cómo exportar caracteres Unicode de org-mode a pdf?

  • ¿Tengo que configurar alguna variable del modo org?
  • Compilar con diferentes intérpretes de látex?
  • ¿Alguna otra idea?
  • Si la versión de desarrollo soluciona esto ... ¿Cómo puedo instalarlo?
Mente vacía
fuente
¿podría dar un ejemplo en texto sin formato además de imágenes ...
rasmus

Respuestas:

9

Necesita usar el archivo de látex en \usepackage[utf8x]{inputenc}lugar del predeterminado \usepackage[utf8]{inputenc}. Esto funciona con látex estándar (pdf).

Para que la exportación de la organización genere esto, debe establecer la variable en org-latex-inputenc-alistconsecuencia. Por ejemplo:

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

Para definir la variable, es posible que (require 'ox-latex)primero necesite .

Desafortunadamente, esto solo admite un conjunto limitado de letras matemáticas. Se puede soportar mucho más mediante la inclusión \usepackage[mathletters]{ucs}. Esto tiene que aparecer antes de las inputenccosas, por lo que no puede usar a #+latex_header:. Una forma de hacerlo es agregarlo a la cabeza de org-latex-default-packages-alist.

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

Tenga en cuenta que la ucsdocumentación (generalmente disponible a través de texdoc ucs) advierte sobre la mathlettersopción:

Esta opción está deshabilitada de forma predeterminada, ya que el uso del griego matemático en un texto normal no se ve bien.

Si desea que esas configuraciones se apliquen solo al archivo actual en lugar de a nivel global, puede definirlas como variables locales de archivo . Agregue lo siguiente cerca del final del archivo:

# 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 es una pseudo variable que permite ejecutar código lisp cuando se carga el archivo.

Jean Pierre
fuente
Los símbolos Ω Θ Γ ωno se exportan. Adivinando habrá más símbolos que no se exportarán.
Empty_Mind
@Empty_Mind Oh my. Probablemente esto fue demasiado simple para funcionar realmente (aunque está bien en el ejemplo proporcionado). Necesita más investigación en el lado del látex.
JeanPierre
@Empty_Mind Acabo de editar mi publicación. Probé solo omega y theta, espero que otro trabajo también.
JeanPierre
Como no pude hacer esto, ¿cómo encontraste la información necesaria? ¿Qué estabas buscando?
Empty_Mind
2
@Empty_Mind El primer paso fue conseguir que la parte de látex funcionara. Busqué unicode en tex.stackexchange y luego utilicé la documentación tex local (inputenc, ucs). Es conveniente editar directamente el archivo tex exportado por org y compilarlo para probarlo. Una vez que obtenga un archivo de látex que funcione, el segundo paso es hacer que la organización exporte las cosas necesarias. Encontré sobre las variables en el archivo ox-latex.eldonde se define el "LaTeX Back-End para Org Export Engine". ¿Debo mencionar que utilicé látex por primera vez en 1995 y me estoy mudando lentamente a Unicode?
JeanPierre
5

Solo necesitaría cargar el soporte Unicode adecuado en LaTeX a través de unicode-mathy fontspec. Entonces necesitarías compilar con xelatexo lualatex.

Ver la cadena de documentación de las siguientes variables: org-latex-packages-alist, org-latex-pdf-processy org-latex-compiler(este último se introduce en Org 9).

En la versión de desarrollo de Org podrías hacer algo como esto:

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

modo org compilación de documentos de látex con símbolos unicode

rasmus
fuente
Esto se ve prometedor. Pero tengo Process completed with errors: [package error] alguna idea de cómo solucionar esto u obtener una descripción de error más específica.
Empty_Mind
¿Cómo puedo instalar la versión de desarrollo?
Empty_Mind
2

Dos caminos a seguir:

1) Escriba expresiones TeX adecuadas (en lugar de unicode) y deje que la organización las muestre como caracteres utf-8 (con C-c C-x \). http://orgmode.org/manual/Special-symbols.html

O 2) Cargue un paquete TeX que traduzca sus caracteres utf-8 en las expresiones matemáticas adecuadas. Por ejemplo https://www.ctan.org/pkg/unicode-math?lang=en .

Dieter.Wilhelm
fuente
1
anuncio 2) ¿cómo cargo ese paquete TeX?
Empty_Mind
@Empty_Mind #+latex_header: \usepackage{unicode-math}. Pero este paquete no me funciona.
JeanPierre