Exportando caracteres unicode para pdf usando o látex do modo organizacional

15

Olá pessoal do Emacs!

Estou tendo problemas para exportar símbolos matemáticos unicode do buffer (modo org) para o arquivo pdf.

1. Descrição do Problema:

Os símbolos são inseridos no buffer como caracteres unicode (via método de entrada TEX ou matemática da empresa )

Aqui está a demonstração do código-fonte:

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

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

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

O arquivo .tex produzido inclui 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}

O arquivo PDF não:

insira a descrição da imagem aqui

2. Coisas que tentei até agora:

Xelatex e unicode-math: Isso está incluído na resposta do Rasmus. Aqui tenho que admitir: não estou usando a versão de desenvolvimento do org-mode que ele está mencionando. (falha na instalação) Tentei o xelatex adn unicode-math de qualquer maneira. Minha versão do modo Org é 8.2.10.

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

Incluir isso no arquivo apresenta uma mensagem não tão agradável quanto o arquivo pdf.

org-latex-compile: arquivo PDF ./unicode_export_test.pdf não foi produzido: [erro de pacote]

Eu verifiquei a instalação correta do unicode-math:

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

A instalação do Xelatex é a versão mais recente:

~ $ 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 a versão de desenvolvimento do modo organizacional: (falhou) A seguir Como eu me mantenho atualizado com o desenvolvimento da borda de ataque? - tutorial Consegui (acho) baixá-lo e compilá-lo. Como não tenho idéia de como informar o Emacs para executar esta versão, o Emacs executa a versão 8.2.10 no modo Org (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). Eu tentei adicionar as seguintes linhas à minha configuração.

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

Sem resultado agradável.

Pesquisando na Internet: a solução não foi encontrada.

Me bater por ser estúpido: não ajudou.

3. Pergunta: Como exportar caracteres unicode do modo organizacional para pdf?

  • Preciso configurar alguma variável de modo organizacional?
  • Compilar com diferentes intérpretes de látex?
  • Alguma outra ideia?
  • Se a versão de desenvolvimento corrigir isso .... Como posso instalá-lo?
Mente vazia
fonte
você poderia por favor fornecer um exemplo em texto simples, além de imagens ...
Rasmus

Respostas:

9

Você precisa do arquivo de látex para usar \usepackage[utf8x]{inputenc}em vez do padrão \usepackage[utf8]{inputenc}. Isso funciona com o látex padrão (pdf).

Para a exportação da organização gerar isso, você deve definir a variável de org-latex-inputenc-alistacordo. Por exemplo:

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

Para que a variável seja definida, você pode precisar (require 'ox-latex)primeiro.

Infelizmente, isso suporta apenas um conjunto limitado de letras matemáticas. Muito mais pode ser suportado, incluindo \usepackage[mathletters]{ucs}. Isso tem que aparecer antes das inputenccoisas, então você não pode simplesmente usar a #+latex_header:. Uma maneira de fazer isso é adicioná-lo à frente org-latex-default-packages-alist.

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

Observe que a ucsdocumentação (geralmente disponível em texdoc ucs) avisa sobre a mathlettersopção:

Esta opção está desativada por padrão, porque o uso de math greek em um texto normal não parece bom.

Se você deseja que essas configurações se apliquem apenas ao arquivo atual e não globalmente, é possível defini-las como variáveis ​​locais do arquivo . Adicione o seguinte próximo ao final do arquivo:

# 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 é uma pseudo variável que permite executar o código lisp quando o arquivo é carregado.

Jean Pierre
fonte
Símbolos Ω Θ Γ ωnão são exportados. Supondo que haverá mais símbolos que não serão exportados.
2141616
@Empty_Mind Oh my. Provavelmente, isso foi muito simples para realmente funcionar (embora esteja tudo bem no exemplo fornecido). Precisa de mais investigação no lado do látex.
precisa saber é o seguinte
@Empty_Mind Acabei de editar meu post. Tentei apenas ômega e teta, espero que outro trabalho também.
JeanPierre
Como não fui capaz de fazer isso sozinho: como você achou as informações necessárias? O que você estava procurando?
2141616_Data de publicação
2
@Empty_Mind O primeiro passo foi fazer com que a peça de látex funcionasse. Eu procurei por unicode em tex.stackexchange e, em seguida, usei a documentação tex local (inputenc, ucs). É conveniente editar diretamente o arquivo tex exportado pela organização e compilá-lo para experimentar. Depois de obter um arquivo de látex funcional, o segundo passo é fazer com que a organização exporte o material necessário. Eu descobri as variáveis ​​no arquivo em ox-latex.elque o "LaTeX Back-End para Org Export Engine" está definido. Devo mencionar que usei o látex pela primeira vez em 1995 e estou passando lentamente para o unicode?
precisa saber é o seguinte
5

Você só precisa carregar o suporte unicode adequado no LaTeX via unicode-mathe fontspec. Então você precisa compilar com xelatexou lualatex.

Ver o Docstring das seguintes variáveis: org-latex-packages-alist, org-latex-pdf-processe org-latex-compiler(o último é introduzido em Org 9).

Na versão de desenvolvimento do Org, você poderia fazer algo assim:

#+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 compilando documentos de látex com símbolos unicode

rasmus
fonte
Isso parece promissor. Mas estou tendo Process completed with errors: [package error] alguma idéia de como corrigir isso ou obter uma descrição de erro mais específica?
21816 Empty_Mind
Como posso instalar a versão de desenvolvimento?
precisa saber é o seguinte
2

Dois caminhos a seguir:

1) Escreva expressões TeX apropriadas (em vez de unicode) e deixe a org apenas exibi- las como caracteres utf-8 (com C-c C-x \). http://orgmode.org/manual/Special-symbols.html

Ou 2) Carregue um pacote TeX que traduza seus caracteres utf-8 nas expressões matemáticas apropriadas. Por exemplo, https://www.ctan.org/pkg/unicode-math?lang=en .

Dieter.Wilhelm
fonte
1
anúncio 2) como carrego esse pacote TeX?
Empty_Mind 5/02
@Empty_Mind #+latex_header: \usepackage{unicode-math}. Mas este pacote não funciona para mim.
precisa saber é o seguinte