Здравствуйте, Добрые люди из Emacs!
У меня проблемы с экспортом математических символов Юникода из буфера (режим org) в файл PDF.
1. Описание проблемы:
Символы вставляются в буфер как символы Юникода (с помощью метода ввода 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 содержит символы Юникода:
% 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: это включено в ответ Расмуса. Здесь я должен признать: я не использую версию разработки org-mode, которую он упоминает. (не удалось установить) Я все равно попробовал xelatex и 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-math:
~ $ 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 запускает версию 8.2.10 в режиме Org (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. Вопрос: Как экспортировать символы Юникода из org-mode в pdf?
- Нужно ли настраивать какую-либо переменную org-mode?
- Компилировать с другим переводчиком латекса?
- Есть еще идеи?
- Если версия для разработчиков исправляет это .... Как я могу установить это?
Ответы:
Вам нужно использовать латексный файл,
\usepackage[utf8x]{inputenc}
а не по умолчанию\usepackage[utf8]{inputenc}
. Это работает со стандартным (pdf) латексом.Чтобы org export сгенерировал это, вы должны установить переменную
org-latex-inputenc-alist
соответственно. Например:Чтобы определить переменную, вам может понадобиться
(require 'ox-latex)
сначала.К сожалению, это поддерживает только ограниченный набор математических букв. Гораздо больше может быть поддержано в том числе
\usepackage[mathletters]{ucs}
. Это должно появиться передinputenc
вещью, поэтому вы не можете просто использовать#+latex_header:
. Способ сделать это - добавить его во главеorg-latex-default-packages-alist
.Обратите внимание, что
ucs
документация (обычно доступная черезtexdoc ucs
) предупреждает об этойmathletters
опции:Если вы хотите, чтобы эти параметры применялись только к текущему файлу, а не глобально, вы можете определить их как локальные переменные файла . Добавьте следующее в конец файла:
eval
псевдо-переменная, позволяющая выполнять код lisp при загрузке файлаисточник
Ω Θ Γ ω
не экспортируются. Предполагается, что будет больше символов, которые не будут экспортироваться.ox-latex.el
где определен «Бэкэнд LaTeX для Org Export Engine». Должен ли я упомянуть, что впервые использовал латекс в 1995 году и постепенно перехожу на юникод?Вам просто нужно загрузить надлежащую поддержку юникода в LaTeX через
unicode-math
иfontspec
. Тогда вам нужно скомпилировать сxelatex
илиlualatex
.См строку документации из следующих переменных:
org-latex-packages-alist
,org-latex-pdf-process
иorg-latex-compiler
(последняя введена в Org 9).В разрабатываемой версии Org вы можете сделать что-то вроде этого:
источник
Process completed with errors: [package error]
какие-либо идеи, как это исправить, или получить более конкретное описание ошибки?Два пути:
1) Либо напишите правильные выражения TeX (вместо юникода), и позвольте 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 .
источник
#+latex_header: \usepackage{unicode-math}
. Но этот пакет не работает для меня.