Làm cách nào để sử dụng các công cụ pdf (chế độ xem pdf) trong emacs?


23

công cụ pdf bao gồm chế độ xem pdf cung cấp một số tính năng không có trong chế độ xem doc (xem cuối câu hỏi).

Nói chung, chế độ xem pdf có thể được sử dụng để thay thế cho chế độ xem tài liệu hay nó phải là "công cụ" của công cụ?

Trong cả hai trường hợp, có cần thiết phải chỉnh sửa nguồn emacs để sử dụng các công cụ pdf trong gnus, eww và orgmode hoặc các cài đặt toàn hệ thống của chúng có thể được sử dụng không?

--- Các tính năng của công cụ pdf ở đây để thuận tiện; xem trang web của github để biết chi tiết ---

  1. Có vẻ nhanh hơn chế độ xem tài liệu
  2. Độ phân giải thường tốt hơn vì không được hiển thị dưới dạng png
  3. Tìm kiếm tốt, và thậm chí có thể tìm kiếm tất cả các lần xuất hiện của một cụm từ
  4. Có thể thêm chú thích văn bản và tô sáng, gạch chân và tương tự
  5. Có thể tạo imenus cho các phần pdf
  6. Có thể coi một số pdf là một pdf "ảo"
  7. Có thể tích hợp với latex để xem nguồn latex và pdf cạnh nhau và nhảy từ vị trí này sang vị trí khác tại các vị trí tương đương (ví dụ: chọn \section{A section}trong LaTeX và có phần đó trong pdf.

Xem ở đây để thảo luận liên quan có thể bao gồm câu trả lời cho câu hỏi của bạn.
tmalsburg

Gnus có thể là một trường hợp đặc biệt? Xem: list.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z

Bạn có thể cần phải sắp xếp lại câu hỏi của mình khỏi 'thực tiễn tốt nhất' đáng sợ, mà một số người cho rằng câu trả lời sẽ chủ yếu dựa trên ý kiến. Tôi dường như nhớ lại gnus là một trường hợp đặc biệt ở đây, và bạn sẽ cần thêm cấu hình phù hợp vào .mailcap. Nếu câu hỏi của bạn không đóng trước khi tôi về nhà, tôi sẽ đào cấu hình của tôi cho bạn.
Tyler

1
Gnus sử dụng mailcap để tìm ra những ứng dụng nào để mở tệp đính kèm. Nếu bạn đã cấu hình Emacs để mở tệp pdf bằng công cụ pdf, bạn cần thêm dòng application/pdf; emacsclient %svào .mailcapvà khởi động máy chủ chỉnh sửa Emacs: gọi Emacs dưới dạng emacs --daemonhoặc thêm (server-start)vào .emacs của bạn.
Tyler

Cảm ơn. Điều đó làm việc, và sau đó điều này làm việc cho org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
brittAnderson

Câu trả lời:


31

Chuyển từ docviewsang pdf-toolsxảy ra 'tự động' khi bạn cài đặt pdf-tools. Khi bạn đã hoàn thành việc này, bất cứ khi nào Emacs cố gắng mở pdf trong Emacs , nó sẽ sử dụng pdf-tools. Tuy nhiên, một số gói sẽ gọi hệ điều hành hoặc sử dụng cấu hình khác trong Emacs để quyết định xem chúng nên sử dụng Emacs hay chương trình khác để mở pdf. Vì vậy, cần có một số cấu hình 'tool-by-tool' để có được tất cả các gói Emacs để sử dụng các công cụ pdf.

Nếu bạn muốn pdf của bạn được mở trong cùng phiên bản Emacs, bạn cần để nó chạy ở chế độ daemon (nghĩa là khởi động nó emacs --daemon) hoặc gọi (server-start)init của bạn để nó emacsclienthoạt động.

Liên kết chế độ Org

Ra khỏi hộp, org-modekhông biết về các công cụ pdf. Tuy nhiên, bạn có thể thêm hỗ trợ để mở liên kết org vào tệp pdf bằng org-pdfview , có sẵn dưới dạng gói trên MELPA. Sau khi được cài đặt, bạn có thể kích hoạt nó với đoạn mã sau trong .emacs:

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

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

Việc làm này sẽ cung cấp một mục tiêu hoàn thành mới cho thêm các liên kết qua C-c C-l, pdfview:với sự hỗ trợ cho nhảy vào các trang web cụ thể. Liên kết đầy đủ sử dụng định dạng:

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

Chế độ xen kẽ & chú thích PDF

Chế độ xen kẽ cung cấp hỗ trợ để trình bày "PDF của bạn cạnh nhau với bộ đệm Chế độ Org với ghi chú của bạn." Đây là một thay thế cho việc sử dụng các chú thích được nhúng trong pdf (mà bạn có thể làm với các công cụ pdf). Thay vào đó, bạn kết thúc với một tệp chế độ org với tất cả các chú thích của bạn, liên kết đến trang trong pdf mà các chú thích được liên kết với.

Gnus

Như tôi đã đề cập trong bình luận của mình, gnussử dụng mailcap để mở tệp đính kèm. Để cấu hình, bạn cần những thứ sau trong .mailcaptệp của mình :

application/pdf; emacsclient %s

EWW

EWW cũng sử dụng mailcap, vì vậy hãy sửa đổi .mailcaptệp của bạn theo Gnus ở trên.

AucTeX

Đối với AucTeX, có một số tùy chọn liên quan:

  • người xem được chỉ định thông qua biến TeX-view-program-selection: tìm mục nhập output-pdfvà chọn "Công cụ PDF" cho giá trị.
  • để sử dụng SyncTex, bạn cần:
    • thiết lập TeX-source-correlate-mode, tương tác bằng cách gọi hàm đó qua Mx hoặc bằng cách đặt biến vĩnh viễn qua M-x customize-variable.
    • đảm bảo TeX-source-correlate-methodbao gồm(pdf . synctex)

Với vị trí này, từ tệp nguồn tex của bạn C-c C-gsẽ hiển thị phần tương ứng của pdf.

ESS

Tùy chỉnh biến ess-pdf-viewer-prefthành emacsclient.

mở xdg

Trên Linux, một số gói sẽ gọi chương trình bên ngoài xdg-openđể mở tệp pdf. Điều này sẽ sử dụng các cài đặt toàn hệ thống của bạn để xác định chương trình nào sẽ sử dụng. Đây là một thay đổi toàn hệ thống, vì vậy các chương trình khác sẽ gửi tài liệu pdf đến Emacs khi bạn thiết lập điều này. Vì vậy, nếu bạn không muốn, ví dụ, Firefox, để làm điều này, bạn sẽ không muốn thực hiện những thay đổi này.

Để đặt emacsclient để mở pdf toàn hệ thống thông qua xdg-open:

  • tạo một tập tin ~/.local/share/applications/emacsclient.desktopvới nội dung:

[Mục trên máy tính để bàn]
Tên = Emacs Client
Exec = emacsclient% u
Icon = emacs-icon
Type = Application
Terminal = false
MimeType = application / pdf;

  • từ dòng lệnh, vấn đề:

xdg-mime default emacsclient.desktop application/pdf

Bạn có thể kiểm tra xem cái này có hoạt động không xdg-open your-document.pdf- nó sẽ mở your-document.pdftrong Emacs.

w3m

Đầu tiên w3m kiểm tra biến w3m-doc-view-content-typesvà nếu thấy "application / pdf" ở đó, nó sẽ mở pdf trong chế độ xem doc. Đây là một biến có thể tùy chỉnh, vì vậy hãy xóa mục "application / pdf" bằng giao diện tùy chỉnh.

Không có mục nhập w3m-doc-view-content-types, w3m tiếp theo sẽ kiểm tra biến w3m-content-type-alistcho các mục khớp với "application / pdf". Tùy chỉnh mục để đọc

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

Bạn cũng có thể sử dụng hàm emacs (có lẽ find-filehoặc tương tự), thay vì một cuộc gọi bên ngoài emacsclient, nhưng tôi không thể tìm ra cú pháp cho điều đó.


Tuy nhiên w3m trong emacs vẫn sử dụng docview. Bất cứ lời khuyên làm thế nào để sửa cái đó?
brittAnderson

xem câu trả lời cập nhật
Tyler

Tôi có thể liên kết từ org-modeđến một chú thích cụ thể trong tệp PDF không?
Luôn luôn học tập vào

1
@AlwaysLearning không phải là điều tôi biết. Chế độ xen kẽ cung cấp hỗ trợ để ghi chú thích trong một tệp chế độ org, được liên kết, riêng biệt. Tôi sẽ cập nhật câu trả lời
Tyler
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.