J'utilise rmarkdown pour rendre les documents pdf. Maintenant, je veux ajouter des liens internes dans les textes.
Dans les pages d'aide de rmarkdown , il est indiqué qu'un lien interne est défini comme suit:
See the [Introduction](#introduction).
Quand j'utilise par exemple le code suivant, il devrait y avoir deux liens internes: link1 et link2. Les deux ne sont pas liés. Y a-t-il quelque chose d'évident que je fais mal? Merci d'avance!
---
title: "Test"
author: "test test"
output:
pdf_document:
latex_engine: xelatex
number_sections: yes
toc: yes
toc_depth: 3
html_document:
css: tables.css
number_sections: yes
theme: cerulean
toc: yes
toc_depth: 3
subtitle: test test test
mainfont: Calibri Light
fontsize: 12pt
header-includes:
- \usepackage[dutch]{babel}
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyfoot[LE,RO]{this is a fancy foot}
- \usepackage{dcolumn}
- \usepackage{here}
- \usepackage{longtable}
- \usepackage{caption}
- \captionsetup{skip=2pt,labelsep=space,justification=justified,singlelinecheck=off}
---
# start
```{r results="asis",tidy=FALSE,eval=TRUE,echo=FALSE,message=FALSE, error=FALSE, warning=FALSE, comment = NA}
cat("click here: [link1](#test 1)")
```
click here: [link2](#test 1)
\pagebreak
#test 3
\pagebreak
#test 2
\pagebreak
#test 1
Vous ne mettez pas les ancres correctement.
Essayez ce qui suit:
# start
```{r results="asis",tidy=FALSE,eval=TRUE}
cat("click here: [link1](#test1)")
```
click here: [link2](#test1)
\pagebreak
# test 3 {#test3}
\pagebreak
#test 2 {#test2}
\pagebreak
#test 1 {#test1}
Il existe des règles délicates pour les liens internes dans la sortie de Rmarkdown PDF, mal documentées sur les feuilles de triche, etc.
Règles:
Un seul #
pour l'ancre, même si vous utilisez un en-tête avec plusieurs #
.
Exemple: ###header
devient #header
lors de la liaison.
Aucun espace entre # et le texte d'ancrage.
Exemple: #header
, pas # header
.
Les ancres multi-mots doivent être séparées par des tirets.
Exemple: #this is a header
doit devenir #this-is-a-header
dans le lien.
Les liens d'ancrage doivent être en minuscules, même si l'en-tête auquel vous vous associez est en majuscule.
Exemple: #Section
devient #section
dans le lien.
Josh Paulson a publié un article sur le site Web de Rstudio dans les détails. Voici sa solution
Slide 1
====================================
id: slide1
Slide 2
====================================
[Go to slide 1](#/slide1)
Cela me fonctionne Le code d'une charrette à bras et de Mohair ne fonctionne pas sous RHTML
@rPirate a une bonne liste, mais il manquait un cas qui me confondait. J'ai eu un en-tête de section comme ### 1.1.1 My Section Title
qui doit être #my-section-title
dans le lien.
Après quelques recherches, j'ai trouvé une liste officielle des règles de transformation dans le manuel Pandoc :
L'algorithme par défaut utilisé pour dériver l'identifiant à partir du texte d'en-tête est le suivant:
- Supprimer tout le formatage, les liens, etc.
- Supprimer toutes les notes de bas de page.
- Supprimez tous les caractères non alphanumériques, à l'exception des traits de soulignement, des traits d'union et des points.
- Remplacez tous les espaces et les nouvelles lignes par des traits d'union.
- Convertissez tous les caractères alphabétiques en minuscules.
- Supprimez tout jusqu'à la première lettre (les identifiants ne peuvent pas commencer par un chiffre ou un signe de ponctuation).
- S'il ne reste plus rien après cela, utilisez la section identifiant.
Ainsi, par exemple,
Header | Identifier -------------------------------------------------------- Header identifiers in HTML | header-identifiers-in-html Maître d'hôtel | maître-dhôtel *Dogs*?--in *my* house? | dogs--in-my-house [HTML], [S5], or [RTF]? | html-s5-or-rtf 3. Applications | applications 33 | section