การส่งออกอักขระ Unicode ไปยัง pdf โดยใช้ Latex จากโหมดองค์กร


15

สวัสดีคนดี ๆ ของ Emacs!

ฉันมีปัญหาในการส่งสัญลักษณ์ทางคณิตศาสตร์ unicode จาก buffer (โหมด org) ไปยังไฟล์ 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 ผลิตรวมถึงสัญลักษณ์ยูนิโค้ด

% 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 ของโหมดพัฒนาที่เขาพูดถึง (ไม่สามารถติดตั้งได้) ฉันลอง 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: (ล้มเหลว) การติดตามฉันจะติดตามการพัฒนาของ Blood Edge ได้อย่างไร - กวดวิชาฉันสามารถ (ฉันคิดว่า) ดาวน์โหลดและรวบรวม เนื่องจากฉันไม่รู้ว่าจะบอกให้ Emacs ใช้งานรุ่นนี้ได้อย่างไร Emacs เรียกใช้ Org-mode เวอร์ชัน 8.2.10 (release_8.2.10 @ /usr/local/share/emacs/24.4/lisp/org/) ฉันพยายามเพิ่มบรรทัดต่อไปนี้ใน config ของฉัน

(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 เป็น pdf

  • ฉันต้องกำหนดค่าตัวแปรโหมด org หรือไม่?
  • รวบรวมกับล่ามลาเท็กซ์ที่แตกต่างกันไหม
  • ความคิดอื่น ๆ ?
  • หากเวอร์ชันการพัฒนาแก้ไขปัญหานี้ .... ฉันจะติดตั้งได้อย่างไร

คุณสามารถโปรดให้ตัวอย่างใน plaintext นอกเหนือไปจากภาพ ...
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ตัวเลือก:

ตัวเลือกนี้จะปิดใช้งานตามค่าเริ่มต้นเนื่องจากการใช้ math greek ในข้อความปกตินั้นดูไม่ดี

หากคุณต้องการตั้งค่าเหล่านั้นจะใช้เฉพาะกับไฟล์ปัจจุบันมากกว่าทั่วโลกที่คุณสามารถกำหนดให้เป็นตัวแปรท้องถิ่นไฟล์ เพิ่มต่อไปนี้ใกล้ถึงจุดสิ้นสุดของไฟล์:

# 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 เป็นตัวแปรหลอกที่อนุญาตให้รันโค้ดเสียงกระเพื่อมเมื่อโหลดไฟล์


สัญลักษณ์Ω Θ Γ ωจะไม่ถูกส่งออก การคาดเดาจะมีสัญลักษณ์เพิ่มเติมที่จะไม่ถูกส่งออก
Empty_Mind

@Empty_Mind โอ้ฉัน อาจเป็นเรื่องง่ายเกินไปที่จะใช้งานได้จริง (แม้ว่ามันจะโอเคกับตัวอย่างที่ให้มา) ต้องการการตรวจสอบด้านยางมากขึ้น
JeanPierre

@Empty_Mind เพิ่งแก้ไขโพสต์ของฉัน พยายามแค่โอเมก้าและทีต้าหวังว่าจะทำงานอื่นได้เช่นกัน
JeanPierre

เนื่องจากฉันไม่สามารถทำสิ่งนี้ด้วยตัวเอง: คุณพบข้อมูลที่จำเป็นได้อย่างไร? คุณกำลังค้นหาอะไร
Empty_Mind

2
@Empty_Mind ขั้นตอนแรกคือการทำให้ส่วนที่เป็นลาเท็กซ์ทำงาน ฉันค้นหายูนิโค้ดที่ tex.stackexchange จากนั้นใช้เอกสาร tex ท้องถิ่น (inputenc, ucs) สะดวกในการแก้ไขไฟล์ tex ที่ส่งออกโดย org โดยตรงและรวบรวมเพื่อลองใช้งานต่างๆ เมื่อคุณได้รับไฟล์ลาเท็กซ์ที่ใช้งานได้ขั้นตอนที่สองคือการทำให้องค์กรส่งออกสิ่งที่ต้องการ ฉันพบเกี่ยวกับตัวแปรในไฟล์ox-latex.elที่กำหนด "LaTeX Back-End สำหรับ Org Export Engine" ไว้ ฉันควรจะพูดถึงว่าฉันใช้ลาเท็กซ์เป็นครั้งแรกในปี 1995 และค่อย ๆเคลื่อนไปเป็น Unicode หรือไม่?
JeanPierre

5

คุณต้องการเพียงแค่ต้องโหลดการสนับสนุน Unicode ที่เหมาะสมในน้ำยางผ่านและunicode-math fontspecจากนั้นคุณจะต้องรวบรวมด้วยหรือxelatexlualatex

ดู docstring ของตัวแปรต่อไปนี้: org-latex-packages-alist, org-latex-pdf-processและorg-latex-compiler(หลังถูกนำมาใช้ในองค์กร 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 รวบรวมเอกสารลาเท็กซ์พร้อมสัญลักษณ์ยูนิโค้ด


นี่มันช่างดูดี แต่ฉันได้รับ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

#+latex_header: \usepackage{unicode-math}@Empty_Mind แต่แพ็คเกจนี้ใช้งานไม่ได้สำหรับฉัน
JeanPierre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.