Comment référencer des blocs source dans le texte de l'organisation


8

Je veux créer des blocs sources (dans n'importe quelle langue, y compris LaTeX), puis y faire référence dans le texte à l'aide de liens internes , avec les descriptions comme indiqué ci-dessous. Ce poste similaire ne fonctionne pas pour moi.

J'ai facilement pu créer de nombreux blocs sources en utilisant la structure commune, par exemple:

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

Ensuite, j'ai ajouté des noms aux blocs parce que je veux en parler avec des liens internes. Je l'ai fait en ajoutant #+NAME:, et j'ai donc ceci:

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

Donc, le bloc de texte est quelque part dans un fichier org (le même dans mon cas) et je veux insérer un lien vers ce bloc de code ci-dessus en utilisant C-c C-l. J'ai essayé cela avec et sans description, donc je me suis retrouvé avec les deux:

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

et

[[some-source-code]]

mais aucun des deux n'est reconnu dans le fichier PDF exporté. Je reçois simplement une paire de points d'interrogation dans le fichier PDF et *Org PDF LaTeX output buffer*il y a juste un message indiquant:

Hyper-référence code-source à la page 6 non défini sur la ligne d'entrée 182.

Dans le fichier org lui-même, les liens sont affichés et si je clique dessus, je suis redirigé vers le bloc de code comme prévu.

Dans la documentation de babel pour de tels blocs source, il y avait une phrase inachevée concernant le (que je suppose pour signifier le nom que je propose pour un bloc source), disant:

Le nom peut contenir 20 caractères et contenir… XXX

Existe-t-il réellement des règles concernant le #+NAME: <label>?

Dois-je inclure un # + LaTeX_HEADER spécifique dans le fichier org ??

Je peux créer des liens vers des sites Web en utilisant C-c C-l, avec une description - et cela est exporté comme prévu au format PDF.

J'ai org-version 8.2.10, emacs version 24.5.


L'exportation de liens vers PDF est-elle une exigence?
Melioratus

@Melioratus - oui, j'aimerais les liens disponibles (cliquables) dans la sortie pdf.
n1k31t4

Bummer les liens dans ma réponse ne seront pas exportés au format PDF. Désolé. Je chercherai une autre solution.
Melioratus

Je pense avoir trouvé un moyen de créer un lien vers le bloc de code lors de l'exportation au format PDF. Je posterai bientôt ma réponse.
Melioratus

Merci d'avoir posé une question! J'ai ajouté la méthode 3 qui sera liée au bloc de code lors de l'exportation au format PDF.
Melioratus

Réponses:


8

Si vous utilisez org-ref ( https://github.com/jkitchin/org-ref ), vous pouvez le faire:

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


See Listing ref:some-source-code

Cela exporte au format PDF et HTML avec des liens actifs.


4

Essaye ça

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

Méthode 1

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

Cela devrait renvoyer à some-source-code.

Avertissement: [[file:::some-source-code]] effectue une recherche dégénérée et recherchera des <<some-source-code>>liens avant #+NAME: some-source-code.

Méthode 2

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

/ regexp /
Effectue une recherche d'expression régulière pour regexp. Cela utilise la commande Emacs se produire pour répertorier toutes les correspondances dans une fenêtre distincte. Si le fichier cible est en mode Org, org-occur est utilisé pour créer une arborescence clairsemée avec les correspondances.

Méthode 3

Lors de l'exportation au format PDF, cela devrait fonctionner.

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

J'espère que cela a aidé!


Ce code a été testé en utilisant
GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14) du
mode organisationnel du 2014-12-25 : 8.3.2


Malheureusement, ni l'un ni l'autre de ces travaux pour moi. Méthode 2 jette l'erreur: Not a Tramp file name: (the regex). La méthode 1 a créé un lien vide, c'est-à-dire une description nulle et un lien vers nulle part. Si je le réécris ici: [[file:alg-page-scrape][My Description]]alors je reçois un lien vers nulle part, mais au moins avec la description apparaissant dans le PDF. Je ne veux pas paraître arrogant, mais ce genre de chose ne devrait-il pas être le «pain et beurre» du mode org? Cela fonctionne pour les fichiers comme prévu, mais pas pour les blocs sources ...
n1k31t4

@DexterMorgan - Lorsque vous avez réécrit les liens, avez-vous utilisé 3 deux-points, c'est file:::alg-page-scrap-à- dire ? Les exemples ne fonctionnent qu'avec 3 deux-points. Cela [[file:::alg-page-scrape][My Description]]devrait donc fonctionner. Veuillez me le faire savoir si ce n'est pas le cas.
Melioratus

Je l'ai essayé en premier avec trois: et cela n'a pas fonctionné. Ensuite, je l'ai essayé avec un après.
n1k31t4

@DexterMorgan - Lorsque vous dites que cela ne fonctionne pas, vous voulez dire lors de l'exportation au format PDF?
Melioratus

Comme je l'ai mentionné, il existe une apparence de lien normale ( org-link-face??), mais aucun lien réel. Cliquer dessus ne m'a pas conduit au bloc source.
n1k31t4
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.