วิธีใช้ pdf-tools (pdf-view-mode) ใน emacs?


23

pdf-toolsรวมถึง pdf-view-mode ซึ่งมีคุณสมบัติหลายอย่างที่ไม่ปรากฏใน doc-view-mode (ดูที่ส่วนท้ายของคำถาม)

pdf-view-mode สามารถใช้แทน doc-view-mode ได้หรือไม่หรือต้องเป็น "เครื่องมือ" โดยเครื่องมือ?

ไม่ว่าในกรณีใดมันจำเป็นหรือไม่ที่จะต้องแก้ไขแหล่ง emacs เพื่อใช้เครื่องมือ pdf ใน gnus, eww และ orgmode หรือการตั้งค่าทั่วทั้งระบบของพวกเขาที่สามารถใช้ได้หรือไม่?

--- คุณสมบัติของเครื่องมือ pdf ที่นี่เพื่อความสะดวก ดูเว็บไซต์ GitHubสำหรับรายละเอียด ---

  1. ดูเหมือนจะเร็วกว่า doc-view
  2. ความละเอียดมักจะดีขึ้นเนื่องจากไม่ได้แสดงผลเป็น png
  3. การค้นหาที่ดีและยังสามารถค้นหาวลีทั้งหมดที่เกิดขึ้น
  4. สามารถเพิ่มคำอธิบายประกอบข้อความและไฮไลต์ขีดเส้นใต้และชอบ
  5. สามารถสร้าง imenus สำหรับส่วน pdf
  6. สามารถใช้กับ pdf หลาย ๆ รูปแบบในรูปแบบ pdf "เสมือน"
  7. สามารถบูรณาการกับน้ำยางเพื่อดูแหล่งน้ำยางข้นและ PDF แบบเคียงข้างกันและกระโดดจากที่หนึ่งไปยังอีกที่หนึ่งในตำแหน่งที่เทียบเท่า (เช่นเลือก\section{A section}ใน LaTeX และรับส่วนนั้นเป็น pdf

ดูที่นี่สำหรับการสนทนาที่เกี่ยวข้องซึ่งอาจรวมถึงคำตอบสำหรับคำถามของคุณ
tmalsburg

Gnus อาจเป็นกรณีพิเศษหรือไม่? ดู: lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z

คุณอาจจำเป็นต้องตั้งคำถามใหม่ของคุณให้ห่างจาก 'แนวปฏิบัติที่ดีที่สุด' ที่น่าหวาดกลัวซึ่งบางคนคิดว่าหมายถึงคำตอบจะเป็นไปตามหลักความคิดเห็น ฉันดูเหมือนจะจำ gnus เป็นกรณีพิเศษที่นี่และคุณจะต้องเพิ่ม config ที่เหมาะสมใน. mailcap หากคำถามของคุณไม่ได้ปิดก่อนที่ฉันจะกลับบ้านฉันจะขุดการกำหนดค่าของฉันให้คุณ
Tyler

1
Gnus ใช้ mailcap เพื่อค้นหาว่าแอปพลิเคชันใดที่จะเปิดไฟล์แนบ ถ้าคุณได้ Emacs กำหนดค่าให้ไฟล์ PDF เปิดไฟล์ PDF เครื่องมือคุณต้องเพิ่มเส้นapplication/pdf; emacsclient %sไป.mailcapและเริ่มต้น Emacs แก้ไขเซิร์ฟเวอร์: วิงวอน Emacs เป็นemacs --daemonหรือเพิ่ม(server-start)การ .emacs ของคุณ
ไทเลอร์

ขอบคุณ ใช้งานได้และหลังจากนั้นก็ใช้งานorgได้ (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
brittAnderson

คำตอบ:


31

เปลี่ยนจากdocviewที่จะเกิดขึ้นโดยอัตโนมัติเมื่อคุณติดตั้งpdf-tools pdf-toolsเมื่อคุณได้กระทำเช่นนี้ตลอดเวลา Emacs พยายามที่จะเปิดไฟล์ PDF ใน Emacspdf-toolsก็จะใช้ อย่างไรก็ตามแพคเกจบางตัวจะโทรออกไปยังระบบปฏิบัติการหรือใช้การตั้งค่าที่แตกต่างกันภายใน Emacs เพื่อตัดสินใจว่าควรใช้ Emacs หรือโปรแกรมอื่นเพื่อเปิดไฟล์ PDF หรือไม่ ดังนั้นจึงจำเป็นต้องมีการกำหนดค่าแบบ 'เครื่องมือต่อเครื่องมือ' เพื่อให้ได้แพ็คเกจ Emacs ทั้งหมดเพื่อใช้เครื่องมือ pdf

หากคุณต้องการให้ไฟล์ PDF ของคุณเปิดในอินสแตนซ์เดียวกันของ Emacs คุณต้องให้มันทำงานในโหมด daemon (เช่นเริ่มด้วยemacs --daemon) หรือโทร(server-start)ใน init ของคุณเพื่อให้emacsclientทำงานได้

ลิงก์ของโหมดองค์กร

ออกจากกล่องorg-modeไม่ทราบเกี่ยวกับรูปแบบไฟล์ PDF เครื่องมือ อย่างไรก็ตามคุณสามารถเพิ่มการสนับสนุนสำหรับการเปิดลิงก์ org ไปยังไฟล์ pdf ด้วยorg-pdfviewซึ่งมีให้ในแพ็คเกจของ MELPA เมื่อติดตั้งแล้วคุณสามารถเปิดใช้งานได้ด้วยรหัสต่อไปนี้ใน.emacs:

(eval-after-load 'org '(require 'org-pdfview))

(add-to-list 'org-file-apps 
             '("\\.pdf\\'" . (lambda (file link)
                                     (org-pdfview-open link))))

การทำเช่นนี้จะช่วยให้เป้าหมายเสร็จใหม่สำหรับการเพิ่มการเชื่อมโยงผ่านC-c C-l, pdfview:ด้วยการสนับสนุนสำหรับการกระโดดไปยังหน้าเว็บที่เฉพาะเจาะจง ลิงก์แบบเต็มใช้รูปแบบ:

[[pdfview:/path/to/myfile.pdf::42][My file Description]]

โหมดการสอดแทรกและการเพิ่มความคิดเห็นแบบ PDF

โหมด Interleaveให้การสนับสนุนสำหรับการนำเสนอ "ไฟล์ PDF ของคุณพร้อมกับ Org Mode buffer พร้อมบันทึกย่อของคุณ" นี่เป็นอีกทางเลือกหนึ่งในการใช้คำอธิบายประกอบที่ฝังอยู่ใน pdf (ซึ่งคุณสามารถทำได้กับเครื่องมือ pdf) แต่คุณกลับมาที่ท้ายด้วยไฟล์โหมดองค์กรที่มีคำอธิบายประกอบทั้งหมดของคุณซึ่งจะเชื่อมโยงไปยังหน้าในรูปแบบ pdf ที่มีคำอธิบายประกอบที่เกี่ยวข้อง

Gnus

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

application/pdf; emacsclient %s

eww

EWW ยังใช้ mailcap ดังนั้นแก้ไข.mailcapไฟล์ของคุณตาม Gnus ด้านบน

AucTeX

สำหรับ AucTeX มีตัวเลือกมากมายที่เกี่ยวข้อง:

  • ผู้ดูถูกระบุผ่านตัวแปรTeX-view-program-selection: ค้นหารายการoutput-pdfและเลือก "เครื่องมือ PDF" สำหรับค่า
  • ในการใช้ SyncTex คุณต้อง:
    • ชุดTeX-source-correlate-modeทั้งโต้ตอบโดยการเรียกฟังก์ชั่นที่ผ่าน Mx M-x customize-variableหรือโดยการตั้งค่าตัวแปรอย่างถาวรผ่าน
    • ตรวจสอบให้แน่ใจTeX-source-correlate-methodรวมถึง(pdf . synctex)

เมื่อใช้สิ่งนี้แล้วไฟล์ต้นฉบับของคุณC-c C-gควรแสดงส่วนที่เกี่ยวข้องของ pdf

ESS

ปรับแต่งตัวแปรess-pdf-viewer-prefให้emacsclientเป็น

XDG เปิด

บน Linux แพคเกจบางตัวจะเรียกโปรแกรมภายนอกxdg-openเพื่อเปิดไฟล์ pdf นี่จะใช้การตั้งค่าทั้งระบบของคุณเพื่อพิจารณาว่าจะใช้โปรแกรมใด นี่เป็นการเปลี่ยนแปลงทั่วทั้งระบบดังนั้นโปรแกรมอื่น ๆ จะส่งเอกสาร PDF ไปยัง Emacs เมื่อคุณตั้งค่านี้ ดังนั้นหากคุณไม่ต้องการเช่นในการทำเช่นนี้คุณจะไม่ต้องการทำการเปลี่ยนแปลงเหล่านี้

วิธีตั้งค่า emacsclient เป็นเปิดทั้งระบบผ่าน pdf xdg-open:

  • สร้างไฟล์~/.local/share/applications/emacsclient.desktopด้วยเนื้อหา:

[รายการเดสก์ท็อป]
ชื่อ = Emacs Client
Exec = emacsclient% u
ไอคอน = emacs-icon
Type = Application
Terminal =
MimeType เท็จ= application / pdf;

  • จากบรรทัดคำสั่งปัญหา:

xdg-mime default emacsclient.desktop application/pdf

คุณสามารถทดสอบว่าสิ่งนี้ใช้ได้กับxdg-open your-document.pdf- ควรเปิดyour-document.pdfใน Emac

w3m

w3m ตรวจสอบตัวแปรw3m-doc-view-content-typesก่อนและถ้าเห็น "application / pdf" ตรงนั้นมันจะเปิดไฟล์ pdf ใน doc-view นี่เป็นตัวแปรที่ปรับแต่งได้ดังนั้นลบรายการ "application / pdf" โดยใช้ส่วนต่อประสานที่กำหนดเอง

หากไม่มีรายการในw3m-doc-view-content-typesw3m จะตรวจสอบตัวแปรw3m-content-type-alistสำหรับรายการที่ตรงกับ "application / pdf" ปรับแต่งรายการที่จะอ่าน

[INS] [DEL] Type: application/pdf
  Regexp: ( ) Not specified
          (*) String: \.pdf\'
  Viewer: ( ) Not specified
          (*) External viewer:
                Command: emacsclient
                Arguments:
                  [INS] [DEL] file
                  [INS]

คุณสามารถใช้ฟังก์ชั่น emacs (สมมุติfind-fileหรือคล้ายกัน) แทนการเรียกจากภายนอกemacsclientแต่ฉันไม่สามารถหาไวยากรณ์สำหรับสิ่งนั้นได้


อย่างไรก็ตาม w3m ใน emacs ยังคงใช้ docview คำแนะนำใด ๆ วิธีการแก้ไขหรือไม่
brittAnderson

ดูคำตอบที่อัปเดต
Tyler

ฉันสามารถลิงก์จากorg-modeไปยังคำอธิบายประกอบเฉพาะในไฟล์ PDF ได้หรือไม่
AlwaysLearning

1
@ เสมอไม่ได้รู้ว่าฉันรู้ โหมด Interleave ให้การสนับสนุนสำหรับการบันทึกคำอธิบายประกอบในไฟล์ org-mode ที่เชื่อมโยงและแยกต่างหาก ฉันจะอัปเดตคำตอบ
Tyler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.