Come fare riferimento ai blocchi di origine nel testo dell'organizzazione


8

Voglio creare blocchi sorgente (in qualsiasi lingua incluso LaTeX), quindi fare riferimento a questi nel testo usando collegamenti interni , con le descrizioni come mostrato di seguito. Questo post simile non funziona per me.

Sono stato facilmente in grado di creare molti blocchi sorgente utilizzando la struttura comune, ad esempio:

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

Quindi ho aggiunto i nomi ai blocchi perché voglio parlarne con collegamenti interni. L'ho fatto aggiungendo #+NAME:, e quindi ho questo:

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

Quindi il blocco di testo è da qualche parte all'interno di un file org (lo stesso nel mio caso) e voglio inserire un collegamento a quel blocco di codice sopra usando C-c C-l. Ho provato questo con e senza una descrizione, quindi alla fine con entrambi:

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

e

[[some-source-code]]

ma nessuno dei due viene riconosciuto nel file PDF esportato. Ricevo semplicemente un paio di punti interrogativi nel file PDF e nel *Org PDF LaTeX output buffer*c'è solo un messaggio che afferma:

Riferimento i -source-codice-sorgente a pagina 6 non definito nella riga di input 182.

All'interno del file org stesso vengono mostrati i collegamenti e se faccio clic su di essi vengo portato al blocco di codice come previsto.

Nella documentazione babel per tali blocchi sorgente c'era una frase dall'aspetto incompiuto riguardante il (che presumo significhi il nome che provo per un blocco sorgente), che dice:

Il nome può contenere 20 caratteri e contenere ... XXX

Ci sono delle regole per quanto riguarda il #+NAME: <label>?

Dovrei includere un # + LaTeX_HEADER specifico nel file org ??

Io sono in grado di creare collegamenti a siti Web che utilizzano C-c C-l, con una descrizione - e questo viene esportato come previsto in PDF.

Ho org-versione 8.2.10, emacs versione 24.5.


L'esportazione di collegamenti in PDF è un requisito?
Melioratus,

@Melioratus - sì, vorrei i link disponibili (cliccabili) nell'output pdf.
n1k31t4,

Bummer i collegamenti nella mia risposta non verranno esportati in PDF. Scusate. Cercherò un'altra soluzione.
Melioratus,

Penso di aver trovato un modo per ricollegarmi al blocco di codice durante l'esportazione in PDF. Pubblicherò presto la mia risposta.
Melioratus,

Grazie per aver posto la domanda! Ho aggiunto il metodo 3 che rimanda al blocco di codice quando viene esportato in PDF.
Melioratus

Risposte:


8

Se usi org-ref ( https://github.com/jkitchin/org-ref ), puoi farlo:

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


See Listing ref:some-source-code

Questo esporta in PDF e HTML con collegamenti attivi.


4

Prova questo

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

Metodo 1

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

Questo dovrebbe tornare a some-source-code.

Avvertenza: [[file:::some-source-code]] sta eseguendo una ricerca degenerata e cercherà <<some-source-code>>prima i collegamenti #+NAME: some-source-code.

Metodo 2

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

/ regexp / Esegue
una ricerca di espressioni regolari per regexp. Questo utilizza il comando Emacs per elencare tutte le corrispondenze in una finestra separata. Se il file di destinazione è in modalità Org, org-si verifica viene utilizzato per creare un albero rado con le corrispondenze.

Metodo 3

Quando si esporta in PDF dovrebbe funzionare.

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

Spero che abbia aiutato!


Questo codice è stato testato usando
GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14) della modalità
org 25-12-2014 : 8.3.2


Sfortunatamente, nessuno di questi funziona per me. Metodo 2 genera l'errore: Not a Tramp file name: (the regex). Il metodo 1 ha creato un collegamento vuoto, ovvero una descrizione zero e un collegamento verso il nulla. Se lo riscrivo a questo: [[file:alg-page-scrape][My Description]]allora ottengo di nuovo un link verso il nulla, ma almeno con la descrizione che appare nel PDF. Non intendo sembrare arrogante, ma questo genere di cose non dovrebbe essere il "pane e burro" della modalità org? Funziona per i file come previsto, ma non per i blocchi sorgente ...
n1k31t4

@DexterMorgan - Quando hai riscritto i link hai usato 3 punti, cioè file:::alg-page-scrap? Gli esempi funzionano solo con 3 punti. Quindi [[file:::alg-page-scrape][My Description]]dovrebbe funzionare. Per favore fatemi sapere se non lo fa.
Melioratus,

L'ho provato prima con tre: e non ha funzionato. Poi l'ho provato con uno dopo.
n1k31t4,

@DexterMorgan - Quando dici che non funziona intendi quando esporti in PDF?
Melioratus,

Come ho già detto, c'è un normale aspetto del link ( org-link-face??), tuttavia nessun link reale. Cliccandoci sopra non mi portò al blocco sorgente.
n1k31t4,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.