Bagaimana cara menautkan ke jangkar bernama di Multimarkdown?


573

Saya telah menemukan sejumlah sebutan dukungan MultiMarkdown untuk tautan internal / jangkar bernama tetapi saya tidak dapat menemukan contoh tunggal bagaimana sebenarnya melakukannya.

Jadi, apa sintaks untuk menunjukkan jangkar bernama, dan apa sintaks untuk menautkannya sama dengan menautkan ke URL lain (hanya menggunakan #foo alih-alih http://....)?


Jika Anda melakukan ini untuk membuat daftar isi, saya akan merekomendasikan doctoc untuk mengotomatisasi ini (memerlukan node.js ). Doctoc menghasilkan kode penurunan harga sehingga akan memberikan contoh cara menautkan ke pos di seluruh dokumen juga (seperti yang dijelaskan dalam jawaban @ user1789493).
James Owers

Jawaban:


659

Dalam Penurunan standar, letakkan jangkar di <a name="abcd"></a>mana Anda ingin menautkan dan merujuknya pada halaman yang sama[link text](#abcd) .

(Ini menggunakan name=dan tidak id=, karena alasan yang dijelaskan dalam jawaban ini .)

Referensi jarak jauh dapat menggunakan [link text](http://...#abcd)tentu saja.

Ini berfungsi seperti mimpi, asalkan Anda memiliki kendali atas sumber dan teks target. Jangkar bahkan dapat muncul dalam tajuk, dengan demikian:

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

menghasilkan:

Judul di entri SO ini!

dan kami bahkan dapat menautkannya jadi:

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

(Pada SO, tautannya tidak berfungsi karena jangkar dilepaskan.)


11
@ jj1bdx saya lakukan sekarang - <a id="id"></a>formulir terbaik. Lihat pertanyaan / jawaban SO ini .
Steve Powell

Selain bagus Steve. Saya akan menandainya sebagai jawaban kecuali pertanyaannya adalah tentang MultiMarkdown. Jelas suara orang menunjukkan bahwa ini adalah tambahan yang bermanfaat. Jadi terima kasih.
masukomi

3
Fyi: Github markdown mengharapkan Anda untuk menggunakan nama = bukan id, tampaknya.
Dieter

@Dieter: name=sudah usang dalam XHTML, tapi sekarang saya menemukan itu id=memiliki efek samping dalam HTML5, jadi saya kembali ke name=jawaban ini.
Steve Powell

3
Bekerja pada github-flavoured-markdown (permata ruby ​​membuatnya seperti yang diharapkan)
Kedar Mhaswade

462

Jika Anda memiliki header dalam file penurunan harga, Anda dapat langsung menautkannya dalam file tersebut.

Head Markdown -

## The Header

ini akan menghasilkan id implisit #the-header(ganti spasi internal dengan tanda hubung dan buat huruf kecil).

Untuk menavigasi ke id ini, Anda dapat membuat tautan seperti ini:

[Link to Header](#the-header)

Ini setara dengan:

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

Harap dicatat nama referensi adalah huruf kecil #header.


30
BitBucket tampaknya mengawali jangkar id dengan "markdown-header-". Jadi jika tajuk Anda adalah ## This Header ##, tautannya adalah [To This Header](#markdown-header-this-header). Jika Anda tidak yakin apa id dari header Anda, gunakan pemeriksa halaman untuk melihat nilai-nilai HTML.
Vinney Kelly

Tidak bekerja untuk saya di Pandoc extended markdown, mungkin berhasil di tempat lain.
Zelphir Kaltstahl

9
@SaurabhM ini HANYA akan bekerja JIKA penurunan harga Anda ke html TIDAK mematuhi standar. Standar tidak membuat tag jangkar. Sekarang, banyak yang tidak mematuhi, tetapi Anda TIDAK seharusnya mengharapkan ini bekerja di mana saja.
masukomi

9
Kenapa oh mengapa kita harus melakukan standarisasi dalam sesuatu yang kurang standar dan setengah matang seperti Markdown. Tidak sabar menunggu AsciiDoc untuk memimpin.
hmijail berduka pada orang-orang yang mengundurkan diri

1
GitHub menambahkan konten pengguna sebelum nama header:[Link](user-content-the-header)
Melvin Witte

137

Diambil dari Panduan Pengguna Multimarkdown (terima kasih kepada @MultiMarkdown di Twitter karena menunjukkannya)

[Some Text][]akan menautkan ke tajuk yang bernama "Some Text"
misalnya

### Some Text ###

Label opsional yang Anda pilih untuk membantu menyamaratakan kasus di mana beberapa tajuk memiliki judul yang sama:

### Overview [MultiMarkdownOverview] ##

Ini memungkinkan Anda untuk menggunakan [MultiMarkdownOverview] untuk merujuk ke bagian ini secara khusus, dan bukan bagian lain bernama Tinjauan. Ini berfungsi dengan header atx- atau settext-style.

Jika Anda telah menetapkan anchor menggunakan id yang sama dengan yang digunakan oleh header, maka anchor yang ditentukan diutamakan.

Selain tajuk dalam dokumen, Anda dapat memberikan label untuk gambar dan tabel yang kemudian dapat digunakan untuk referensi silang juga.


FWIW, ini tidak bekerja dengan mode penurunan-emacs pada 23.4.1.
Attila Lendvai

5
Penurunan harga tidak mendukung catatan kaki. Karena itu tidak akan berfungsi di sebagian besar mode "Penurunan harga". MultiMarkdown, namun mendukung sejumlah ekstensi yang membuat hidup lebih mudah bagi penulis.
masukomi

11
Github tampaknya tidak mendukung label di header?
andig

1
Ini tidak berfungsi (setidaknya pada codepen.io) ketika ada ':' di header.
Xiao Peng - ZenUML.com

2
tautan itu adalah dokumentasi oleh orang yang menulis MultiMarkdown. Tidak yakin apa yang Anda lakukan di codepen.io tapi saya yakin dokumennya akurat. Perlu diingat MULTI Markdown NOT Markdown.
masukomi

100

Saya menguji Github Flavour Markdown untuk sementara waktu dan dapat meringkas dengan empat aturan:

  1. tanda baca akan dijatuhkan
  2. ruang putih terdepan akan dijatuhkan
  3. huruf besar akan dikonversi ke huruf kecil
  4. spasi antar huruf akan dikonversi menjadi -

Misalnya, jika bagian Anda diberi nama ini:

## 1.1 Hello World

Buat tautan dengan cara ini:

[Link](#11-hello-world)

Bagaimana jika ada tanda hubung dalam namanya? Apa itu dikonversi? Perhatikan, ada spasi antara kata dan tanda hubung. contoh: `` `- [My - Header] (# my --- header) # My - Header` `` Apakah itu benar?
Spencer Pollock

stackoverflow.com/a/17820138/2908724 untuk terminologi tentang gaya ini. Saya lebih suka "kebab-case".
Uskup

22

Cara terbaik untuk membuat tautan internal (terkait dengan bagian) adalah membuat daftar tetapi alih-alih tautan, letakkan #section atau # section-title jika header menyertakan spasi.

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

---- PREVIEW DAFTAR ------------------------

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>

Tidak masalah apakah itu tajuk h1, h2, h3, dll., Anda selalu merujuknya menggunakan hanya satu # .
Semua referensi dalam daftar bagian harus dikonversi ke teks huruf kecil seperti yang ditunjukkan pada contoh di atas.

Tautan ke bagian harus huruf kecil.Dengan cara lain itu tidak akan berhasil.
Teknik ini bekerja sangat baik untuk semua varian Markdown, juga MultiMarkdown.

Saat ini saya menggunakan Pandoc untuk mengonversi format dokumen. Ini jauh lebih baik daripada MultiMarkdown.
Uji Pandoc di sini


6
seperti tercantum dalam komentar lain di sini. yang tidak akan berfungsi dalam penurunan harga apa pun -> html converter yang benar-benar mengikuti standar. Membuat tag jangkar di pos hanya terjadi di BEBERAPA konverter. Selain itu, mereka tidak akan mengkonversi semua spasi menjadi garis putus-putus. INI TIDAK BISA tidak dihitung.
masukomi

1
Saya menggunakan GitHub Markdown dalam editor kode Atom yang memiliki paket bawaan bernama "Markdown Preview". Dari mode pratinjau saya membuat file html menggunakan menu konteks "Simpan sebagai HTML ...".
rafr3

ya, maksud saya adalah Anda tidak dapat mengandalkan teknik Anda bekerja di tempat lain, dan baik pertanyaannya, maupun jawaban Anda secara khusus tentang penurunan harga di Atom. Pertanyaannya bahkan bukan tentang penurunan harga, ini tentang MultiMarkdown.
masukomi

Saya menggunakan metode tautan ini tetapi tidak berfungsi untuk saya. tidak meluncur ke bagian / header itu.
Tom Kustermans

Berikan kepala hingga sensitif huruf. Jika Anda mendefinisikan ## HelloAnda harus menyebutnya sebagai[Whatever you want](#Hello)
Victor Augusto

9

Di mdcharm seperti ini:

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

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

2

Ini solusi saya (didapat dari SaraubhMjawaban)

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

Yang memberi Anda:

Langsung ke : Hotkeys & Marker / Radii / Route Wizard 2.0

Catat perubahan dari dan .ke -dan juga hilangnya &tautan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.