Експорт символів unicode в pdf, використовуючи латекс з режиму org


15

Привіт Добрі люди Emacs!

У мене виникають проблеми з експортом символів математики Unicode з буфера (org-mode) у pdf-файл.

1. Опис проблеми:

Символи вставляються в буфер як символи unicode (за допомогою методу введення TEX або компанії-математики )

Ось демонстрація вихідного коду:

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

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

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

Створений файл .tex включає символи 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}

Pdf-файл не:

введіть тут опис зображення

2. Речі, які я спробував поки що:

Xelatex та unicode-math: це включено у відповідь від Rasmus. Тут я мушу визнати: я не використовую розробну версію org-mode, яку він згадує. (не вдалося встановити його) Я намагався xelatex adn unicode-math у будь-якому випадку. Моя версія режиму Org - 8.2.10.

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

Включивши це у файл, замість pdf-файлу вводиться не таке прекрасне повідомлення.

org-latex-compile: PDF-файл ./unicode_export_test.pdf не створено: [помилка пакета]

Я перевірив правильність установки unicode-математики:

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

Установка Xelatex - це найновіша версія:

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

встановити розробну версію org-mode: (не вдалося) Наступне Як я можу постійно підтримувати розвиток кровотоку? - підручник Я зміг (я думаю) завантажити його і скласти. Оскільки я не знаю, як сказати Emacs запускати цю версію, Emacs запускає Org-режим версії 8.2.10 (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). Я спробував додати наступні рядки до моєї конфігурації.

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

Без приємного результату.

Пошук в Інтернеті: рішення не знайдено.

Побиття себе за дурність: не допомогло.

3. Питання: Як експортувати символи Unicode з org-mode в pdf?

  • Чи потрібно налаштувати якусь змінну в режимі org?
  • Компілювати з різним перекладачем латексу?
  • Будь-які інші ідеї?
  • Якщо версія розробки виправляє це .... Як я можу його встановити?

Ви можете надати приклад у простому тексті на додаток до зображень ...
rasmus

Відповіді:


9

Вам потрібен латексний файл, \usepackage[utf8x]{inputenc}а не за замовчуванням \usepackage[utf8]{inputenc}. Це працює зі стандартним (pdf) латексом.

Щоб створити експорт org, це потрібно встановити змінну org-latex-inputenc-alistвідповідно. Наприклад:

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

Для визначення змінної вам може знадобитися (require 'ox-latex)спочатку.

На жаль, це підтримує лише обмежений набір математичних букв. Набагато більше можна підтримати, включивши \usepackage[mathletters]{ucs}. Це повинно з’явитися перед inputencматеріалами, тому ви не можете просто використовувати #+latex_header:. Спосіб зробити це - додати його на чолі з org-latex-default-packages-alist.

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

Зауважте, що ucsдокументація (зазвичай доступна через texdoc ucs) попереджає про mathlettersваріант:

Цей параметр вимкнено за замовчуванням, оскільки використання математичної грецької мови у звичайному тексті виглядає не добре.

Якщо ви хочете, щоб ці налаштування застосовувались лише до поточного файлу, а не глобально, ви можете визначити їх як локальні змінні . Додайте наступне наприкінці файлу:

# 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 є псевдо змінною, що дозволяє виконувати Lisp-код під час завантаження файлу.


Символи Ω Θ Γ ωне експортуються. Здогадуючись, буде більше символів, які не експортуватимуться.
Empty_Mind

@Empty_Mind О мій. Напевно, це було занадто просто, щоб справді працювати (хоча на наведеному прикладі це нормально). Потрібно більше розслідування на стороні латексу.
ЖанП'єр

@Empty_Mind Щойно відредагував моє повідомлення. Спробував лише омегу та тету, сподіваюсь і на інші роботи.
ЖанП'єр

Оскільки я не зміг зробити це самостійно: як ти знайшов потрібну інформацію? Що ви шукали?
Empty_Mind

2
@Empty_Mind Першим кроком було налагодження роботи з латексу. Я шукав unicode на tex.stackexchange, а потім використовував локальну текстову документацію (inputenc, ucs). Зручно безпосередньо редагувати текстовий файл, експортований org і компілювати його, щоб спробувати речі. Як тільки ви отримаєте робочий файл з латексу, другим кроком є ​​організація експорту потрібних матеріалів. Я дізнався про змінні у файлі, ox-latex.elде визначено "LaTeX Back-End для Org Export Engine". Чи варто згадати, що я вперше використав латекс у 1995 році і повільно переходжу до унікоду?
ЖанП'єр

5

Вам просто потрібно буде завантажити належну підтримку unicode в LaTeX через unicode-mathі fontspec. Тоді вам потрібно буде компілювати з xelatexабо lualatex.

Див рядок документації з наступних змінних: org-latex-packages-alist, org-latex-pdf-processі org-latex-compiler(остання введена в Org 9).

У розробній версії Org ви можете зробити щось подібне:

#+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-режимі, що компілюють латексні документи з символами unicode


Це виглядає перспективно. Але я отримую Process completed with errors: [package error] будь-які ідеї, як це виправити чи отримати більш конкретний опис помилки?
Empty_Mind

Як я можу встановити версію розробки?
Empty_Mind

2

Два шляхи:

1) Або напишіть належні вирази TeX (замість unicode) і нехай org просто відображає їх у вигляді символів utf-8 (з C-c C-x \). http://orgmode.org/manual/Special-symbols.html

Або 2) Завантажте пакет TeX, який переводить ваші utf-8 символів у відповідні математичні вирази. Наприклад, https://www.ctan.org/pkg/unicode-math?lang=en .


1
оголошення 2) як я завантажую цей пакет TeX?
Empty_Mind

@Empty_Mind #+latex_header: \usepackage{unicode-math}. Але цей пакет для мене не працює.
ЖанП'єр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.