Mengekspor karakter unicode ke pdf menggunakan lateks dari mode org


15

Halo orang-orang baik Emacs!

Saya mengalami masalah saat mengekspor simbol matematika unicode dari buffer (mode-org) ke file pdf.

1. Deskripsi Masalah:

Simbol dimasukkan ke buffer sebagai karakter unicode (melalui metode input TEX atau matematika perusahaan )

Berikut ini adalah demonstrasi kode sumber:

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

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

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

File .tex yang dihasilkan termasuk simbol 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}

File pdf tidak:

masukkan deskripsi gambar di sini

2. Hal yang saya coba sejauh ini:

Xelatex dan unicode-math: Ini termasuk dalam jawaban dari Rasmus. Di sini saya harus mengakui: Saya tidak menggunakan versi pengembangan mode-org yang dia sebutkan. (gagal menginstalnya) Saya sudah mencoba xelatex dan unicode-math. Versi mode Org saya adalah 8.2.10.

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

Termasuk ini dalam file memperkenalkan pesan yang tidak begitu indah bukan file pdf.

kompilasi org-lateks: file PDF ./unicode_export_test.pdf tidak diproduksi: [paket error]

Saya telah memeriksa instalasi unicode-math yang benar:

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

Instalasi Xelatex adalah versi terbaru:

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

instal versi pengembangan dari mode-org: (gagal) Mengikuti Bagaimana saya tetap mengikuti perkembangan tepi pendarahan? - tutorial saya sudah bisa (saya pikir) mengunduhnya dan mengompilasinya. Karena saya tidak tahu bagaimana cara memberitahu Emacs untuk menjalankan versi ini, Emacs menjalankan Org-mode versi 8.2.10 (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). Saya telah mencoba menambahkan baris berikut ke konfigurasi saya.

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

Tanpa hasil yang menyenangkan.

Mencari di internet: Solusi tidak ditemukan.

Mengalahkan diriku sendiri karena bodoh: Tidak membantu.

3. Pertanyaan: Bagaimana cara mengekspor karakter unicode dari mode-org ke pdf?

  • Apakah saya harus mengkonfigurasi beberapa variabel mode-org?
  • Kompilasi dengan penerjemah Lateks yang berbeda?
  • Ada ide lain?
  • Jika versi pengembangan memperbaiki ini .... Bagaimana saya bisa menginstalnya?

dapatkah Anda memberikan contoh dalam plaintext di samping gambar ...
rasmus

Jawaban:


9

Anda membutuhkan file lateks untuk digunakan \usepackage[utf8x]{inputenc}daripada default \usepackage[utf8]{inputenc}. Ini berfungsi dengan lateks standar (pdf).

Untuk ekspor org untuk menghasilkan ini, Anda harus mengatur variabel org-latex-inputenc-alistsesuai. Sebagai contoh:

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

Agar variabel dapat didefinisikan, Anda mungkin perlu (require 'ox-latex)terlebih dahulu.

Sayangnya, ini hanya mendukung satu set huruf matematika terbatas. Banyak lagi yang bisa didukung termasuk \usepackage[mathletters]{ucs}. Ini harus muncul sebelum inputencbarang, jadi Anda tidak bisa menggunakan a #+latex_header:. Cara untuk melakukannya adalah dengan menambahkannya di kepala org-latex-default-packages-alist.

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

Perhatikan bahwa ucsdokumentasi (biasanya tersedia melalui texdoc ucs) memperingatkan tentang mathlettersopsi:

Opsi ini dinonaktifkan secara default, karena menggunakan matematika yunani dalam teks normal tidak terlihat bagus.

Jika Anda ingin pengaturan itu hanya berlaku untuk file saat ini daripada secara global, Anda dapat mendefinisikannya sebagai file variabel lokal . Tambahkan yang berikut di dekat akhir file:

# 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 adalah variabel pseudo yang memungkinkan untuk mengeksekusi kode lisp ketika file tersebut dimuat.


Simbol Ω Θ Γ ωtidak diekspor. Menebak akan ada lebih banyak simbol yang tidak akan diekspor.
Empty_Mind

@Empty_Mind Oh my. Mungkin ini terlalu sederhana untuk benar-benar berfungsi (meskipun tidak apa-apa pada contoh yang diberikan) Perlu penyelidikan lebih lanjut tentang sisi lateks.
JeanPierre

@Empty_Mind Baru saja mengedit posting saya. Mencoba hanya omega dan theta, semoga berhasil juga.
JeanPierre

Karena saya tidak dapat melakukan ini sendiri: Bagaimana Anda menemukan informasi yang diperlukan? Apa yang kamu cari?
Empty_Mind

2
@Empty_Mind Langkah pertama adalah membuat bagian lateks berfungsi. Saya mencari unicode di tex.stackexchange dan kemudian menggunakan dokumentasi tex lokal (inputenc, ucs). Lebih mudah untuk langsung mengedit file tex yang diekspor oleh org dan mengompilasinya untuk mencoba berbagai hal. Setelah Anda mendapatkan file lateks yang berfungsi, langkah kedua adalah membuat org mengekspor barang-barang yang dibutuhkan. Saya menemukan tentang variabel dalam file di ox-latex.elmana "LaTeX Back-End untuk Mesin Ekspor Org" didefinisikan. Haruskah saya menyebutkan saya menggunakan lateks pertama kali pada tahun 1995 dan perlahan - lahan pindah ke unicode?
JeanPierre

5

Anda hanya perlu memuat dukungan unicode yang tepat di LaTeX via unicode-mathdan fontspec. Maka Anda harus mengkompilasi dengan xelatexatau lualatex.

Lihat docstring dari variabel-variabel berikut: org-latex-packages-alist, org-latex-pdf-processdan org-latex-compiler(yang terakhir diperkenalkan di Org 9).

Dalam versi pengembangan Org Anda dapat melakukan sesuatu seperti ini:

#+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 mengkompilasi dokumen lateks dengan simbol unicode


Ini terlihat menjanjikan. Tapi saya mendapatkan Process completed with errors: [package error] ide bagaimana cara memperbaikinya, atau mendapatkan deskripsi kesalahan yang lebih spesifik?
Empty_Mind

Bagaimana saya bisa menginstal versi pengembangan?
Empty_Mind

2

Dua cara:

1) Entah menulis ekspresi TeX yang tepat (bukan unicode) dan biarkan org hanya menampilkannya sebagai karakter utf-8 (dengan C-c C-x \). http://orgmode.org/manual/Special-symbols.html

Atau 2) Muat paket TeX yang menerjemahkan karakter utf-8 Anda ke dalam ekspresi matematika yang tepat. Misalnya https://www.ctan.org/pkg/unicode-math?lang=en .


1
iklan 2) bagaimana cara memuat paket TeX itu?
Empty_Mind

@Empty_Mind #+latex_header: \usepackage{unicode-math}. Tetapi paket ini tidak bekerja untuk saya.
JeanPierre
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.