Cách tham chiếu các khối nguồn trong văn bản org


8

Tôi muốn tạo các khối nguồn (bằng bất kỳ ngôn ngữ nào bao gồm LaTeX), sau đó tham khảo các khối này trong văn bản bằng các liên kết nội bộ , với các mô tả như được hiển thị bên dưới. Bài viết tương tự này không làm việc cho tôi.

Tôi đã dễ dàng có thể tạo nhiều khối nguồn bằng cấu trúc chung, ví dụ:

#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

Sau đó, tôi đã thêm tên vào các khối vì tôi muốn nói về chúng bằng các liên kết nội bộ. Id đã làm điều này bằng cách thêm #+NAME:và vì vậy có điều này:

#+NAME: some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

Vì vậy, khối văn bản nằm ở đâu đó trong tệp org (cùng loại trong trường hợp của tôi) và tôi muốn chèn một liên kết đến khối mã đó ở trên bằng cách sử dụng C-c C-l. Tôi đã thử điều này có và không có mô tả, vì vậy kết thúc bằng cả hai:

[[some-source-code][my description]]

[[some-source-code]]

nhưng không được công nhận trong tệp PDF xuất. Tôi chỉ cần lấy một cặp dấu hỏi trong tệp PDF và trong *Org PDF LaTeX output buffer*đó chỉ có một thông báo:

Siêu tham chiếu một số mã nguồn ở trang 6 không xác định trên dòng đầu vào 182.

Trong chính tệp org, các liên kết được hiển thị và nếu tôi nhấp vào chúng, tôi sẽ được đưa đến khối mã như mong đợi.

Trong tài liệu babel cho các khối nguồn như vậy có một câu có vẻ chưa hoàn thành liên quan đến (mà tôi giả sử có nghĩa là tên tôi chứng minh cho một khối nguồn), nói:

Tên có thể dài 20 ký tự và có chứa XXX XXX

Có thực sự có quy tắc liên quan đến #+NAME: <label>?

Tôi có nên đưa # + LaTeX_HEADER cụ thể vào tệp org không ??

Tôi khả năng tạo ra các liên kết đến các trang web sử dụng C-c C-l, với một mô tả - và điều này được xuất khẩu như mong đợi sang PDF.

Tôi có phiên bản org.10.10, phiên bản emacs 24.5.


Là xuất liên kết sang PDF là một yêu cầu?
Melioratus

@Melioratus - vâng, tôi muốn các liên kết có sẵn (có thể nhấp) trong đầu ra pdf.
n1k31t4

Bummer các liên kết trong câu trả lời của tôi sẽ không xuất sang PDF. Lấy làm tiếc. Tôi sẽ tìm giải pháp khác.
Melioratus

Tôi nghĩ rằng tôi đã tìm thấy một cách để liên kết trở lại khối mã khi xuất sang PDF. Tôi sẽ đăng câu trả lời của tôi sớm.
Melioratus

Cảm ơn bạn đã đặt câu hỏi! Tôi đã thêm phương thức 3 sẽ liên kết trở lại khối mã khi xuất sang PDF.
Melioratus

Câu trả lời:


8

Nếu bạn sử dụng org-ref ( https://github.com/jkitchin/org-ref ), bạn có thể làm điều này:

#+caption: test label:some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC


See Listing ref:some-source-code

Điều này xuất sang PDF và HTML với các liên kết hoạt động.


4

Thử cái này

#+NAME: some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

Phương pháp 1

[[file:::some-source-code]]

Điều này sẽ liên kết trở lại some-source-code.

Hãy cẩn thận: [[file:::some-source-code]] đang thực hiện tìm kiếm thoái hóa và sẽ tìm kiếm các <<some-source-code>>liên kết trước đó #+NAME: some-source-code.

Cách 2

[[file:::/#\+name: +some-source-code/]]

/ regapi /
Thực hiện tìm kiếm biểu thức chính quy cho regrec. Điều này sử dụng lệnh Emacs xảy ra để liệt kê tất cả các trận đấu trong một cửa sổ riêng biệt. Nếu tệp mục tiêu ở chế độ Org, org-xảy ra được sử dụng để tạo một cây thưa thớt với các kết quả khớp.

Phương pháp 3

Khi xuất ra PDF, nó sẽ hoạt động.

#+BEGIN_LaTeX
\hypertarget{some-source-code}{} 
#+END_LaTeX
#+NAME: some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

#+BEGIN_SRC latex
  See \hyperlink{some-source-code}{some source code}.
#+END_SRC

Hy vọng rằng đã giúp!


Mã này đã được kiểm tra bằng
GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343,14) của
chế độ org 2014-12-25 : 8.3.2


Thật không may, cả hai không làm việc cho tôi. Phương pháp 2 ném lỗi : Not a Tramp file name: (the regex). Phương pháp 1 đã tạo ra một liên kết trống, đó là mô tả bằng không và một liên kết đến hư không. Nếu tôi viết lại nó vào đây: [[file:alg-page-scrape][My Description]]thì tôi sẽ nhận được một liên kết đến hư không, nhưng ít nhất là với mô tả xuất hiện trong PDF. Tôi không có vẻ kiêu ngạo, nhưng không phải thứ này là 'bánh mì-bơ' của chế độ org sao? Nó hoạt động cho các tệp như mong đợi, nhưng không phải cho các khối nguồn ...
n1k31t4 13/03/2016

@DexterMorgan - Khi bạn viết lại các liên kết bạn đã sử dụng 3 dấu hai chấm, nghĩa là file:::alg-page-scrap? Các ví dụ chỉ hoạt động với 3 dấu hai chấm. Vì vậy [[file:::alg-page-scrape][My Description]]nên làm việc. Xin vui lòng cho tôi biết nếu nó không.
Melioratus

Tôi đã thử nó đầu tiên với ba: và điều đó không hiệu quả. Sau đó, tôi đã thử nó với một cái sau đó.
n1k31t4

@DexterMorgan - Khi bạn nói nó không hoạt động, ý bạn là khi xuất ra PDF?
Melioratus

Như tôi đã đề cập, có một liên kết xuất hiện bình thường ( org-link-face??), tuy nhiên không có liên kết thực sự. Nhấp vào nó không đưa tôi đến khối nguồn.
n1k31t4
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.