Come collegarsi a un'ancora denominata in Multimarkdown?


573

Mi sono imbattuto in diverse menzioni del supporto di MultiMarkdown per collegamenti interni / ancore nominate, ma non sono in grado di trovare un singolo esempio di come farlo effettivamente.

Quindi, qual è la sintassi per indicare l'ancora denominata e qual è la sintassi per collegarla allo stesso modo del collegamento ad altri URL (usando solo #foo invece di http://....)?


Se lo stai facendo per creare un sommario, consiglierei doctoc di automatizzarlo (richiede node.js ). Doctoc genera il codice markdown in modo da fornire un esempio di come collegare anche le intestazioni nel documento (come descritto nella risposta di @ user1789493).
James Owers,

Risposte:


659

In Markdown standard, posiziona un'ancora nel punto in <a name="abcd"></a>cui desideri collegarti e fai riferimento ad essa nella stessa pagina [link text](#abcd).

(Questo usa name=e non id=, per ragioni spiegate in questa risposta .)

I riferimenti remoti possono [link text](http://...#abcd)ovviamente usare .

Funziona come un sogno, a condizione che tu abbia il controllo sui testi di origine e di destinazione. L'ancora può anche apparire in un'intestazione, quindi:

### <a name="head1234"></a>A Heading in this SO entry!

produce:

Una voce in questa voce SO!

e possiamo persino collegarci ad esso così:

and we can even [link](#head1234) to it so:

(Su SO, il collegamento non funziona perché l'ancoraggio è rimosso.)


11
@ jj1bdx Lo faccio ora: il <a id="id"></a>modulo è il migliore. Vedi questa domanda / risposta SO .
Steve Powell,

Bella aggiunta Steve. Lo segnerei come risposta, tranne per il fatto che la domanda riguardava MultiMarkdown. Ovviamente i voti delle persone indicano che questa è stata un'aggiunta utile. Quindi grazie.
Masukomi,

3
Fyi: il markdown di Github si aspetta che tu usi name = invece di id, a quanto pare.
Dieter,

@Dieter: è name=stato deprecato in XHTML, ma ora trovo che id=abbia un effetto collaterale in HTML5, quindi sto tornando a name=in questa risposta.
Steve Powell,

3
Funziona su markdown al gusto di github (la gemma rubino lo rende come previsto)
Kedar Mhaswade,

462

Se hai le intestazioni nei file markdown, puoi collegarle direttamente nel file.

Intestazione Markdown -

## The Header

questo genererà un ID implicito #the-header(sostituisce gli spazi interni con trattini e rende minuscole).

Per navigare verso questo ID, puoi creare il link in questo modo:

[Link to Header](#the-header)

Ciò equivale a:

<a href="#the-header">Link to Header</a>

Si noti che il nome del riferimento è in minuscolo #header.


30
BitBucket sembra anteporre l'id di ancoraggio con "markdown-header-". Quindi, se l'intestazione è ## This Header ##, il collegamento sarebbe [To This Header](#markdown-header-this-header). Se non sei sicuro di quale sia l'id della tua intestazione, usa un ispettore di pagina per vedere i valori HTML.
Vinney Kelly,

Non ha funzionato per me nel markdown esteso Pandoc, potrebbe funzionare altrove.
Zelphir Kaltstahl,

9
@SaurabhM funzionerà SOLO SE il convertitore markdown in html NON aderisce allo standard. Lo standard non crea tag di ancoraggio. Ora, molti non aderiscono, ma NON dovresti aspettarti che funzioni ovunque.
Masukomi,

9
Perché oh perché abbiamo dovuto standardizzare in qualcosa di meno standard e mezzo cotto come Markdown. Non vedo l'ora che AsciiDoc prenda il comando.
hmijail piange le dimissioni il

1
GitHub aggiunge il contenuto dell'utente prima del nome dell'intestazione:[Link](user-content-the-header)
Melvin Witte il

137

Tratto dalla Guida per l'utente di Multimarkdown (grazie a @MultiMarkdown su Twitter per averlo sottolineato)

[Some Text][]collegherà a un'intestazione denominata "Some Text"
ad es

### Some Text ###

Un'etichetta facoltativa di tua scelta per aiutare a chiarire i casi in cui più intestazioni hanno lo stesso titolo:

### Overview [MultiMarkdownOverview] ##

Ciò consente di utilizzare [MultiMarkdownOverview] per fare riferimento in modo specifico a questa sezione e non a un'altra sezione denominata Panoramica. Funziona con intestazioni in stile atx o settext.

Se è già stata definita un'ancora utilizzando lo stesso ID utilizzato da un'intestazione, l'ancora definita ha la precedenza.

Oltre alle intestazioni all'interno del documento, è possibile fornire etichette per immagini e tabelle che possono essere utilizzate anche per riferimenti incrociati.


FWIW, non funziona con la modalità markdown di emacs al 23.4.1.
Attila Lendvai,

5
Markdown non supporta le note a piè di pagina. Pertanto, non funzionerà nella maggior parte delle modalità "Markdown". MultiMarkdown, tuttavia, supporta una serie di estensioni che semplificano la vita agli scrittori.
Masukomi,

11
Github non sembra supportare le etichette nelle intestazioni?
Andig

1
Questo non funziona (almeno su codepen.io) quando c'è ":" nell'intestazione.
Xiao Peng - ZenUML.com il

2
quel link è la documentazione del ragazzo che ha scritto MultiMarkdown. Non sono sicuro di cosa stai facendo in codepen.io ma sono sicuro che i documenti siano accurati. Ricorda MULTI Markdown NOT Markdown.
Masukomi,

100

Ho provato Github Flavored Markdown per un po 'e posso riassumere con quattro regole:

  1. i segni di punteggiatura verranno eliminati
  2. gli spazi bianchi iniziali verranno eliminati
  3. le maiuscole verranno convertite in minuscole
  4. gli spazi tra le lettere verranno convertiti in -

Ad esempio, se la tua sezione è chiamata così:

## 1.1 Hello World

Crea un link in questo modo:

[Link](#11-hello-world)

E se ci sono trattini nel nome? In cosa si converte? Nota, ci sono spazi tra le parole e i trattini. esempio: `` `- [My - Header] (# my --- header) # My - Header` `` Sarebbe corretto?
Spencer Pollock,

stackoverflow.com/a/17820138/2908724 per la terminologia su questo stile. Preferisco il "caso kebab".
vescovo

22

Il modo migliore per creare collegamenti interni (correlati alle sezioni) è creare un elenco ma, anziché un collegamento, inserire #section o # section-title se l'intestazione include spazi.

---- MARKDOWN ------------------------

Go to section
* [Hello](#hello)  
* [Hello World](#hello-world)
* [Another section](#new-section)    <-- it's called 'Another section' in this list but refers to 'New section'


## Hello
### Hello World
## New section

---- ELENCO ANTEPRIME ------------------------

Go to section
Hello              <-- [Hello](#hello)                 -- go to `Hello` section
Hello World        <-- [Hello World](#hello world)     -- go to `Hello World` section
Another section    <-- [Another section](#new-section) -- go to `New section`

---- HTML ------------------------

<p>Go to section</p>
<ul>
<li><a href="#hello">Hello</a><br />
</li>
<li><a href="#hello-world">Hello World</a></li>
<li><a href="#new-section">Another section</a> &lt;– it’s called ‘Another section’ in this list but refers to ‘New section’</li>
</ul>
<h2 id="hello">Hello</h2>
<h3 id="hello-world">Hello World</h3>
<h2 id="new-section">New section</h2>

Non importa se si tratta di intestazione h1, h2, h3, ecc., Fai sempre riferimento ad essa usando solo una #.
Tutti i riferimenti nell'elenco delle sezioni devono essere convertiti in testo minuscolo come mostrato nell'esempio sopra.

Il collegamento alla sezione deve essere minuscolo. Altrimenti non funzionerà.
Questa tecnica funziona molto bene per tutte le varianti di Markdown, anche MultiMarkdown.

Attualmente sto usando Pandoc per convertire il formato dei documenti. È molto meglio di MultiMarkdown.
Prova Pandoc qui


6
come notato in altri commenti qui. che non funzionerà in nessun markdown -> convertitore html che segue effettivamente lo standard. La creazione di tag di ancoraggio nelle intestazioni avviene solo in ALCUNI convertitori. Inoltre, non convertiranno tutti gli spazi in trattini. QUESTO NON PUO 'essere contato.
Masukomi,

1
Sto usando GitHub Markdown nell'editor di codice Atom che ha un pacchetto integrato chiamato "Markdown Preview". Dalla modalità di anteprima creo un file html utilizzando il menu di scelta rapida "Salva come HTML ...".
rafr3,

Sì, il mio punto è che non puoi contare sul fatto che la tua tecnica funzioni altrove, e né la domanda, né la tua risposta riguarda specificamente il markdown in Atom. La domanda non riguarda nemmeno Markdown, si tratta di MultiMarkdown.
Masukomi,

Sto usando questo metodo di collegamento ma non funziona per me. non scorre alla sezione / quell'intestazione.
Tom Kustermans,

Dai un avvertimento al maiuscolo / minuscolo. Se si definisce un ## Hellosi dovrebbe fare riferimento ad esso come[Whatever you want](#Hello)
Victor Augusto

9

In mdcharm è così:

* [Descripción](#descripcion)
* [Funcionamiento](#funcionamiento)
* [Instalación](#instalacion)
* [Configuración](#configuracion)

### Descripción {#descripcion}
### Funcionamiento {#funcionamiento}
### Instalación {#instalacion}
### Configuración {#configuracion}

2

Ecco la mia soluzione (derivata dalla SaraubhMrisposta)

**Jump To**: [Hotkeys & Markers](#hotkeys-markers) / [Radii](#radii) / [Route Wizard 2.0](#route-wizard-2-0)

Che ti dà:

Vai a : Tasti di scelta rapida e marcatori / Raggio / Route Wizard 2.0

Nota le modifiche da e .ae -anche la perdita di &nei link.

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.