Cara referensi blok sumber dalam teks org

8

Saya ingin membuat blok sumber (dalam bahasa apa pun termasuk LaTeX), kemudian merujuknya dalam teks menggunakan tautan internal , dengan deskripsi seperti yang ditunjukkan di bawah ini. Ini posting serupa tidak bekerja untuk saya.

Saya dengan mudah dapat membuat banyak blok sumber menggunakan struktur umum, misalnya:

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

Lalu saya menambahkan nama ke blok karena saya ingin membicarakannya dengan tautan internal. Id melakukan ini dengan menambahkan #+NAME:, dan begini:

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

Jadi blok teks berada di suatu tempat di dalam file org (yang sama dalam kasus saya) dan saya ingin menyisipkan tautan ke blok kode di atas menggunakan C-c C-l. Saya sudah mencoba ini dengan dan tanpa deskripsi, jadi berakhir dengan keduanya:

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

dan

[[some-source-code]]

tetapi keduanya tidak dikenali dalam file PDF yang diekspor. Saya cukup mendapatkan sepasang tanda tanya di file PDF dan di *Org PDF LaTeX output buffer*sana hanya ada pesan yang menyatakan:

Referensi hiper beberapa kode sumber pada halaman 6 tidak ditentukan pada jalur input 182.

Dalam file org itu sendiri, tautan ditampilkan dan jika saya mengkliknya saya dibawa ke blok kode seperti yang diharapkan.

Dalam dokumentasi babel untuk blok sumber seperti itu ada kalimat yang belum selesai tentang (yang saya anggap berarti nama yang saya berikan untuk blok sumber), mengatakan:

Panjangnya bisa 20 karakter, dan mengandung… XXX

Apakah sebenarnya ada aturan tentang #+NAME: <label>?

Haruskah saya menyertakan # + LaTeX_HEADER tertentu dalam file org ??

Saya saya dapat membuat link ke website menggunakan C-c C-l, dengan deskripsi - dan ini diekspor seperti yang diharapkan ke PDF.

Saya memiliki org-versi 8.2.10, emacs versi 24.5.

n1k31t4
sumber
Apakah mengekspor tautan ke PDF merupakan persyaratan?
Melioratus
@Melioratus - ya, saya ingin tautan tersedia (dapat diklik) dalam output pdf.
n1k31t4
Sayangnya tautan dalam jawaban saya tidak akan diekspor ke PDF. Maaf. Saya akan mencari solusi lain.
Melioratus
Saya rasa saya menemukan cara untuk menautkan kembali ke blok kode ketika mengekspor ke PDF. Saya akan segera mengirimkan jawaban saya.
Melioratus
Terima kasih telah mengajukan pertanyaan! Saya menambahkan metode 3 yang akan menghubungkan kembali ke blok kode ketika diekspor ke PDF.
Melioratus

Jawaban:

8

Jika Anda menggunakan org-ref ( https://github.com/jkitchin/org-ref ), Anda dapat melakukan ini:

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


See Listing ref:some-source-code

Ini mengekspor ke PDF dan HTML dengan tautan aktif.

John Kitchin
sumber
4

Coba ini

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

Metode 1

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

Ini harus terhubung kembali ke some-source-code.

Peringatan: [[file:::some-source-code]] sedang melakukan pencarian yang menurun dan akan mencari <<some-source-code>>tautan sebelumnya #+NAME: some-source-code.

Metode 2

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

/ regexp /
Lakukan pencarian ekspresi reguler untuk regexp. Ini menggunakan perintah Emacs untuk membuat daftar semua kecocokan di jendela terpisah. Jika file target dalam mode Org, org-terjadi digunakan untuk membuat pohon jarang dengan pertandingan.

Metode 3

Saat mengekspor ke PDF ini harus bekerja.

#+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

Harapan itu membantu!


Kode ini diuji menggunakan
GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14) dari 2014-12-25
mode-org: 8.3.2

Melioratus
sumber
Sayangnya, tak satu pun dari ini bekerja untuk saya. Metode 2 melempar kesalahan: Not a Tramp file name: (the regex). Metode 1 membuat tautan kosong, yaitu nol deskripsi dan tautan ke mana pun. Jika saya menulis ulang untuk ini: [[file:alg-page-scrape][My Description]]maka saya mendapatkan tautan ke mana-mana lagi, tetapi setidaknya dengan deskripsi yang muncul dalam PDF. Saya tidak bermaksud terdengar sombong, tetapi bukankah hal semacam ini menjadi 'roti-dan-mentega' dari mode-org? Ini berfungsi untuk file seperti yang diharapkan, tetapi tidak untuk blok sumber ...
n1k31t4
@DexterMorgan - Ketika Anda menulis ulang tautan, apakah Anda menggunakan 3 titik dua, yaitu file:::alg-page-scrap? Contoh-contoh hanya bekerja dengan 3 titik dua. Jadi [[file:::alg-page-scrape][My Description]]harusnya bekerja. Tolong beri tahu saya jika tidak.
Melioratus
Saya mencobanya terlebih dahulu dengan tiga: dan itu tidak berhasil. Kemudian saya mencobanya dengan satu sesudahnya.
n1k31t4
@DexterMorgan - Ketika Anda mengatakan itu tidak berhasil maksud Anda saat mengekspor ke PDF?
Melioratus
Seperti yang saya sebutkan, ada tampilan tautan normal ( org-link-face??), namun tidak ada tautan yang sebenarnya. Mengkliknya tidak membawa saya ke blok sumber.
n1k31t4