6
votes

Filtre Pandoc pour ajouter des notes de bas de page aux liens

Je voulais juste demander si quelqu'un connaît un filtre court pour Pandoc pour ajouter automatiquement des notes de bas de page à des liens. Je veux juste avoir une source de liaison lisible dans mes documents imprimés. Donc, pour spécifier, je voudrais aller de xxx

à quelque chose comme xxx

donc dans le fichier pdf imprimé de l'URL des liens Je fais référence à, devrait être visible au bas de la page.


0 commentaires

3 Réponses :


7
votes

ESSAYER

import Text.Pandoc.JSON

main = toJSONFilter go
  where go (Link attr lab (src, tit)) = Span ("",[],[]) [Link attr lab (src, tit), Note [Plain [Str src]]]
        go x = x


4 commentaires

Merci, je ne savais pas que c'était aussi facile. J'aimerais aussi avoir les liens toujours là, mais vous ne pouvez pas tout avoir :)


Votre deuxième édition ne semble pas fonctionner, le premier lien se répète encore encore et encore: Imgur


J'ai édité et utilisé une approche différente - encore non testée (je suis loin d'un environnement où je peux tester cela).


Notez que dans le nouveau PANDOC, la définition de l'élément de liaison a changé, vous devez donc remplacer link Lab (src, tit) avec link autoratoire (src, tit) , et il travaux.



2
votes

Une alternative au fait de le faire avec des filtres Pandoc, comme dans John MacFarlane Réponse serait de Utiliser latex Pour cela, créant un fichier *. TEX code> et y compris celui-ci par exemple via -h code> / - Inclure-en-tête code> option PANDOC CODE>.

Le code de la latex pourrait ressembler à ceci (comme non testé), basé sur Heiko Oberdiek répond à Générer automatiquement la liste de \ URL code> USAGES dans le document Question sur Tex & Latex Stackexchange: P> xxx pré>

Je pense que l'URL code> est automatiquement inclus par Pandoc; Sinon, vous auriez besoin d'ajouter \ upepackage {url} code> en haut du code ci-dessus. p>


Notez que le lien de la note de bas de page dans la solution ci-dessus utilise \ URL {} code> au lieu de code> en tant que note de bas de page. Je pense que ça a l'air mieux, et il n'y aurait certainement aucun problème avec _ code> dans l'URL (je ne sais pas si Pandoc s'échappe pour le latex ou non), et pas de problèmes avec une pause de ligne respectueuse de l'URL Manipulation de très longues URL. P>

La réponse John MacFarlane peut être tout simplement modifiée pour le faire: P>

import Text.Pandoc.JSON

main = toJSONFilter go
  where go (Link alt desc (url, title)) = Span ("",[],[]) [Link alt desc (url, title), Note [Plain [Link alt [Str url] (url, "")]]]
        go x = x


0 commentaires

2
votes

La solution suivante fournit exactement ce que l'OP a demandé (et ce dont j'ai besoin) avec aucun filtre . Partout où vous avez un lien dans votre document, il conserve le lien, ajoute une note de bas de page, et dans la note de bas de page, une URL complète.

Cette solution vous oblige à modifier le modèle de latex, cependant.

Étape 1 (facultatif, si vous avez déjà un modèle de latex personnalisé)

Si vous n'avez pas déjà copié le modèle par défaut quelque part, faites-le maintenant en utilisant Pandoc -D latex et sauvegarde Cette sortie à un fichier, peut-être template.latex , que je vais utiliser comme un nom d'exemple pour le reste de ceci.

étape 2

trouver La section suivante Votre modèle (qui est présent Dans le modèle par défaut): xxx

et le remplacer par xxx

puis exécutez Pandoc comme pandoc - V LIENS-AS-NOTES --TEMPLATE = template.latex document.md -o document.pdf . Vous avez terminé!

Étape 3 (facultatif)

Il y a quelques modifications que vous pouvez faire. Si vous êtes fatigué d'écrire -v links-as-notes , vous pouvez soit:


0 commentaires