Xuất ký tự unicode sang pdf bằng latex từ chế độ org


15

Xin chào những người tốt của Emacs!

Tôi gặp sự cố khi xuất các ký hiệu toán học unicode từ bộ đệm (chế độ org) sang tệp pdf.

1. Mô tả sự cố:

Các biểu tượng được chèn vào bộ đệm dưới dạng các ký tự unicode (thông qua phương thức nhập TEX hoặc công ty toán học )

Dưới đây là trình diễn mã nguồn:

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

ℝ ℤ ℕ ⇒ ∈ ∀ 

Same symbols in latex format:

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

Tệp .tex được sản xuất bao gồm các ký hiệu 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}

Tệp pdf không:

nhập mô tả hình ảnh ở đây

2. Những điều tôi đã cố gắng cho đến nay:

Xelatex và unicode-math: Điều này được bao gồm trong câu trả lời từ Rasmus. Ở đây tôi phải thừa nhận: Tôi không sử dụng phiên bản phát triển của chế độ org mà anh ấy đề cập. (không thể cài đặt nó) Dù sao tôi cũng đã thử xelatex adn unicode-math. Phiên bản chế độ Org của tôi là 8.2.10.

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

Bao gồm điều này trong tập tin giới thiệu tin nhắn không đáng yêu thay vì tập tin pdf.

org-latex-compile: tệp PDF ./unicode_export_test.pdf không được tạo: [lỗi gói]

Tôi đã kiểm tra cài đặt unicode-math chính xác:

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

Cài đặt Xelatex là phiên bản mới nhất:

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

cài đặt phiên bản phát triển của org-mode: (thất bại) Sau Làm thế nào để giữ hiện tại với chảy máu phát triển cạnh? - hướng dẫn tôi đã có thể (tôi nghĩ) tải về và biên dịch nó. Vì tôi không biết làm thế nào để nói với Emacs chạy phiên bản này, Emacs chạy phiên bản Org-mode 8.2.10 (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/). Tôi đã cố gắng thêm các dòng sau vào cấu hình của tôi.

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

Không có kết quả làm hài lòng.

Tìm kiếm trên internet: Không tìm thấy giải pháp.

Đánh đập bản thân vì ngu ngốc: Không giúp được gì.

3. Câu hỏi: Làm cách nào để xuất các ký tự unicode từ chế độ org sang pdf?

  • Tôi có phải cấu hình một số biến chế độ org không?
  • Biên dịch với trình thông dịch latex khác nhau?
  • Còn ý tưởng nào khác không?
  • Nếu phiên bản phát triển sửa lỗi này .... Làm thế nào tôi có thể cài đặt nó?

bạn có thể vui lòng cung cấp một ví dụ trong bản rõ ngoài hình ảnh ...
rasmus

Câu trả lời:


9

Bạn cần tập tin latex để sử dụng \usepackage[utf8x]{inputenc}chứ không phải mặc định \usepackage[utf8]{inputenc}. Điều này hoạt động với latex (pdf) tiêu chuẩn.

Để xuất org để tạo điều này, bạn phải đặt biến org-latex-inputenc-alisttương ứng. Ví dụ:

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

Đối với biến được xác định, (require 'ox-latex)trước tiên bạn có thể cần phải .

Thật không may, điều này chỉ hỗ trợ một tập hợp các chữ cái toán học hạn chế. Nhiều hơn nữa có thể được hỗ trợ bằng cách bao gồm \usepackage[mathletters]{ucs}. Điều này phải xuất hiện trước các inputenccông cụ, vì vậy bạn không thể chỉ sử dụng một #+latex_header:. Một cách để làm điều đó là thêm nó vào đầu org-latex-default-packages-alist.

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

Lưu ý rằng ucstài liệu (thường có sẵn thông qua texdoc ucs) cảnh báo về mathletterstùy chọn:

Tùy chọn này bị tắt theo mặc định, vì sử dụng toán học tiếng Hy Lạp trong một văn bản bình thường có vẻ không tốt.

Nếu bạn muốn các cài đặt đó chỉ áp dụng cho tệp hiện tại thay vì toàn cầu, bạn có thể xác định chúng là các biến cục bộ của tệp . Thêm phần sau vào gần cuối tệp:

# 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 là một biến giả cho phép thực thi mã lisp khi tệp được tải.


Biểu tượng Ω Θ Γ ωkhông được xuất khẩu. Đoán sẽ có nhiều biểu tượng sẽ không được xuất khẩu.
Empty_Mind 7/03/2016

@Empty_Mind ơi. Có lẽ điều này quá đơn giản để thực sự hoạt động (mặc dù nó ổn trên ví dụ được cung cấp). Cần điều tra nhiều hơn về phía latex.
JeanPierre

@Empty_Mind Chỉ cần chỉnh sửa bài viết của tôi. Đã thử chỉ omega và theta, hy vọng công việc khác là tốt.
JeanPierre

Vì tôi không thể tự làm điều này: Làm thế nào bạn tìm thấy sự xâm nhập cần thiết? Bạn đang tìm kiếm cái gì?
Empty_Mind 7/03/2016

2
@Empty_Mind Bước đầu tiên là làm cho phần latex hoạt động. Tôi đã tìm kiếm unicode tại tex.stackexchange và sau đó sử dụng tài liệu tex cục bộ (inputenc, ucs). Thật thuận tiện để chỉnh sửa trực tiếp tệp tex được xuất bởi org và biên dịch nó để thử mọi thứ. Khi bạn nhận được một tệp latex hoạt động, bước thứ hai là tạo org xuất các thứ cần thiết. Tôi đã tìm thấy về các biến trong tệp trong ox-latex.elđó "LaTeX Back-End cho Org Export Engine" được xác định. Tôi có nên đề cập đến lần đầu tiên tôi sử dụng latex vào năm 1995 và đang dần chuyển sang unicode?
JeanPierre

5

Bạn chỉ cần tải hỗ trợ unicode thích hợp trong LaTeX thông qua unicode-mathfontspec. Sau đó, bạn cần phải biên dịch với xelatexhoặc lualatex.

Xem docstring của các biến sau: org-latex-packages-alist, org-latex-pdf-processorg-latex-compiler(sau này được giới thiệu trong Org 9).

Trong phiên bản phát triển của Org, bạn có thể làm một cái gì đó như thế này:

#+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 biên dịch tài liệu latex với các ký hiệu unicode


Điều này có vẻ hứa hẹn. Nhưng tôi đang có Process completed with errors: [package error] ý tưởng nào để khắc phục điều này hoặc nhận mô tả lỗi cụ thể hơn?
Empty_Mind

Làm cách nào để cài đặt phiên bản phát triển?
Empty_Mind

2

Hai cách để đi:

1) Viết các biểu thức TeX thích hợp (thay vì unicode) và để org chỉ hiển thị chúng dưới dạng các ký tự utf-8 (có C-c C-x \). http://orgmode.org/manual/ecial-symbols.html

Hoặc 2) Tải gói TeX giúp dịch các ký tự utf-8 của bạn thành các biểu thức toán học phù hợp. Ví dụ: https://www.ctan.org/pkg/unicode-math?lang=en .


1
quảng cáo 2) làm cách nào để tôi tải gói TeX đó?
Empty_Mind

@Empty_Mind #+latex_header: \usepackage{unicode-math}. Nhưng gói này không làm việc cho tôi.
JeanPierre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.