ฉันจะดูตัวอย่างสูตร TeX แบบอินไลน์ในโหมดใดก็ได้ได้อย่างไร


14

ฉันจะดูตัวอย่าง TeX ภายในโหมดอื่นที่ไม่ใช่ AUCTeX หรือโหมด org ได้อย่างไร ฉันชอบที่จะเห็นสมการ TeX ใน jabber, erc และ markdown ถ้าฉันเคยเปลี่ยนมาใช้อีเมลของ Emacs ฉันก็คงจะอยากเห็นตัวอย่างที่นั่นด้วย


1
ฉันยังไม่ได้ลองสิ่งนี้ แต่คุณอาจต้องการดูmmm-modeว่าสามารถใช้โหมดหลักหลาย ๆ แบบในบัฟเฟอร์ได้อย่างไร
Vamsi

คำตอบ:


10

ฉันได้ลองใช้ AUCTeX Preview-latexอีกครั้งแต่ล้มเหลวและเลิกใช้

org โหมดยังมีคุณลักษณะเดียวกัน ปรากฎว่ามีการจัดการweechatเพื่อนำมาใช้ซ้ำเพื่อแสดงตัวอย่างยางพาราโดยอัตโนมัติ

ฉันได้แยกส่วนแสดงตัวอย่างจาก weechat เป็นไฟล์แยกซึ่งคุณสามารถหาซื้อได้จากrepoนี้ นอกจากนี้ยังมีให้ในpxแพ็คเกจของ MELPA (ฉันเพิ่งส่งมา)

มีจุดเข้าใช้งาน 4 จุดซึ่งเรียกว่าแบบโต้ตอบ:

  • px-preview: แสดงชิ้นส่วนลาเท็กซ์ทั้งหมดในบัฟเฟอร์ปัจจุบัน
  • px-preview-region: แสดงแฟรกเมนต์ในภูมิภาค
  • px-remove: ลบตัวอย่างทั้งหมดจากบัฟเฟอร์ปัจจุบัน (กู้คืนข้อความ)
  • px-toggle: สลับการแสดงตัวอย่างในบัฟเฟอร์ปัจจุบัน

ตราบใดที่โปรแกรมดูตัวอย่างโหมด org ทำงานได้โหมดนี้ก็ควร

เนื่องจากรหัสยังค่อนข้างเล็กฉันจะรวมไว้ด้านล่าง แต่โปรดติดตั้งแพคเกจหรือใช้ repo

;;; px.el --- preview inline latex -*- lexical-binding: t -*-

;; Most of this code comes from weechat-latex.el which in turn uses
;; org-mode previewer.

;; Copyright (C) 2014 Aurélien Aptel <aurelien.aptel@gmail.com>
;; Copyright (C) 2013 Rüdiger Sonderfeld <ruediger@c-plusplus.de>

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

(require 'org)

(defvar px-temp-file-prefix "px-"
  "Prefix for temporary files.")

(defvar px-temp-directory-prefix "px-"
  "Prefix for temporary directory.")

(defvar px-image-program org-latex-create-formula-image-program
  "Program to convert LaTeX fragments.
See `org-latex-create-formula-image-program'")

(defvar px-temp-dir nil
  "The temporary directory used for preview images.")

(defun px--create-preview (at)
  "Wrapper for `org-format-latex'.
The parameter AT should be nil or in (TYPE . POINT) format.  With TYPE being a
string showing the matched LaTeX statement (e.g., ``$'') and POINT being the
POINT to replace.  If AT is nil replace statements everywhere."
  (org-format-latex px-temp-file-prefix
                    px-temp-dir
                    'overlays
                    "Creating images...%s"
                    at 'forbuffer
                    px-image-program))

(defun px--set-temp-dir ()
  "Set `px-temp-dir' unless it is already set."
  (unless px-temp-dir
    (setq px-temp-dir
          (make-temp-file px-temp-directory-prefix
                          'directory))))

(defun px-preview ()
  "Preview LaTeX fragments."
  (interactive)
  (save-excursion
    (let ((inhibit-read-only t))
      (px--set-temp-dir)
      (org-remove-latex-fragment-image-overlays)
      (px--create-preview nil))))

(defun px-preview-region (beg end)
  "Preview LaTeX fragments in region."
  (interactive "r")
  (let* ((math-regex (assoc "$" org-latex-regexps))
         (regex (nth 1 math-regex))
         (n (nth 2 math-regex))
         matches)
    (save-excursion
      (goto-char beg)
      (while (re-search-forward regex end t)
        (setq matches (cons (cons "$" (match-beginning n)) matches)))
      (let ((inhibit-read-only t))
        (px--set-temp-dir)
        (dolist (i matches)
          (px--create-preview i))))))


(defun px-remove ()
  "Remove LaTeX preview images."
  (interactive)
  (let ((inhibit-read-only t))
    (org-remove-latex-fragment-image-overlays)))

(defun px-is-active? ()
  "Are LaTeX Previews currently displayed?"
  org-latex-fragment-image-overlays)

(defun px-toggle ()
  "Toggle display of LaTeX preview."
  (interactive)
  (if (px-is-active?)
      (px-remove)
    (px-preview)))


(provide 'px)

0

นอกจากนี้ยังมีที่ทำงานออกจากกล่องสำหรับความคิดเห็นในtexfrag.el Doxygenprog-mode

คุณสามารถติดตั้งtexfrag.elจากทางmelpa-stableM-x package-install RET texfrag RET

เรียกใช้M-x texfrag-mode RETเพื่อเปิดใช้งานตัวอย่าง คุณได้รับเมนูแสดงตัวอย่างพร้อมกับรายการทั้งหมดของแพ็คเกจดูตัวอย่าง AUCTeX

โปรดทราบว่าtexfragยังใช้งานได้กับการแก้ไขซอร์ส html, eww และโหมด org

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.