Làm cách nào để liên kết đến một neo có tên trong Multimarkdown?


573

Tôi đã bắt gặp một số đề cập về sự hỗ trợ của MultiMarkdown cho các liên kết nội bộ / các neo được đặt tên nhưng tôi không thể tìm thấy một ví dụ duy nhất về cách thực sự làm điều đó.

Vậy, cú pháp biểu thị neo được đặt tên là gì và cú pháp để liên kết với nó giống như liên kết với bất kỳ URL nào khác (chỉ sử dụng #foo thay vì http://....)?


Nếu bạn đang làm điều này để tạo một bảng mục lục, tôi khuyên bạn nên doctoc tự động hóa việc này (yêu cầu node.js ). Doctoc tạo mã đánh dấu để nó cũng cung cấp một ví dụ về cách liên kết với các tiêu đề trong toàn bộ tài liệu (như được mô tả trong câu trả lời của @ user1789493).
James Owers

Câu trả lời:


659

Trong Markdown tiêu chuẩn, đặt một neo <a name="abcd"></a>nơi bạn muốn liên kết và tham chiếu đến nó trên cùng một trang bằng cách [link text](#abcd).

(Điều này sử dụng name=và không id=, vì lý do giải thích trong câu trả lời này .)

Tài liệu tham khảo từ xa có thể sử dụng [link text](http://...#abcd)tất nhiên.

Điều này hoạt động như một giấc mơ, miễn là bạn có quyền kiểm soát các văn bản nguồn và đích. Neo thậm chí có thể xuất hiện trong một tiêu đề, do đó:

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

sản xuất:

Một tiêu đề trong mục SO này!

và chúng tôi thậm chí có thể liên kết với nó như vậy:

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

(Trên SO, liên kết không hoạt động vì neo bị tước.)


11
@ jj1bdx Tôi làm ngay bây giờ - <a id="id"></a>hình thức là tốt nhất. Xem câu hỏi / câu trả lời SO này .
Steve Powell

Steve bổ sung tốt đẹp. Tôi đánh dấu nó là câu trả lời ngoại trừ câu hỏi là về MultiMarkdown. Rõ ràng phiếu bầu của mọi người đang chỉ ra rằng đây là một bổ sung hữu ích. Vì vậy, cảm ơn.
masukomi

3
Fyi: Github markdown mong bạn sử dụng name = thay vì id, có vẻ như vậy.
kiêng

@Dieter: name=không được dùng trong XHTML, nhưng bây giờ tôi thấy điều đó id=có tác dụng phụ trong HTML5, vì vậy tôi quay trở lại name=trong câu trả lời này.
Steve Powell

3
Hoạt động trên nhãn hiệu github-markdown (đá quý ruby ​​làm cho nó đúng như mong đợi)
Kedar Mhaswade

462

Nếu bạn có các tiêu đề trong các tệp markdown, bạn có thể liên kết trực tiếp chúng trong tệp.

Tiêu đề Markdown -

## The Header

điều này sẽ tạo ra một id ẩn #the-header(thay thế không gian bên trong bằng dấu gạch nối và viết thường).

Để điều hướng đến id này, bạn có thể tạo liên kết như thế này:

[Link to Header](#the-header)

Điều này tương đương với:

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

Xin lưu ý tên của tài liệu tham khảo là chữ thường #header.


30
BitBucket dường như tiền tố id neo với "markdown-header-". Vì vậy, nếu tiêu đề của bạn là ## This Header ##, liên kết sẽ là [To This Header](#markdown-header-this-header). Nếu bạn không chắc id của tiêu đề là gì, hãy sử dụng trình kiểm tra trang để xem các giá trị HTML.
Vinney Kelly

Không làm việc cho tôi trong Pandoc đánh dấu mở rộng, có thể làm việc ở nơi khác.
Zelphir Kaltstahl

9
@SaurabhM điều này sẽ CHỈ hoạt động NẾU việc chuyển đổi sang html của bạn KHÔNG tuân thủ tiêu chuẩn. Tiêu chuẩn không tạo ra các thẻ neo. Bây giờ, nhiều người không tuân thủ, nhưng bạn KHÔNG nên mong đợi nó hoạt động ở bất cứ đâu.
masukomi

9
Tại sao oh tại sao chúng ta phải tiêu chuẩn hóa trong một cái gì đó ít tiêu chuẩn và nửa nướng như Markdown. Không thể chờ đợi AsciiDoc dẫn đầu.
hmijail thương tiếc người từ chức

1
GitHub thêm nội dung người dùng trước tên của tiêu đề:[Link](user-content-the-header)
Melvin Witte

137

Lấy từ Hướng dẫn người dùng Multimarkdown (cảm ơn @MultiMarkdown trên Twitter đã chỉ ra)

[Some Text][]sẽ liên kết đến một tiêu đề có tên là “Một số văn bản”
ví dụ

### Some Text ###

Một nhãn tùy chọn mà bạn chọn để giúp phân biệt các trường hợp có nhiều tiêu đề có cùng tiêu đề:

### Overview [MultiMarkdownOverview] ##

Điều này cho phép bạn sử dụng [MultiMarkdownOverview] để tham khảo cụ thể phần này và không phải phần khác có tên Tổng quan. Điều này hoạt động với các tiêu đề kiểu atx- hoặc lắng đọng.

Nếu bạn đã xác định một neo sử dụng cùng một id được sử dụng bởi một tiêu đề, thì neo được xác định sẽ được ưu tiên.

Ngoài các tiêu đề trong tài liệu, bạn có thể cung cấp nhãn cho hình ảnh và bảng mà sau đó cũng có thể được sử dụng để tham khảo chéo.


FWIW, nó không hoạt động với chế độ đánh dấu của emacs kể từ ngày 23.4.1.
Attila Lendvai

5
Markdown không hỗ trợ chú thích. Vì vậy, nó sẽ không hoạt động trong hầu hết các chế độ "Đánh dấu". Tuy nhiên, MultiMarkdown hỗ trợ một số tiện ích mở rộng giúp cuộc sống của các nhà văn dễ dàng hơn.
masukomi

11
Github dường như không hỗ trợ nhãn trong tiêu đề?
andig

1
Điều này không hoạt động (ít nhất là trên codepen.io) khi có ':' trong tiêu đề.
Xiao Peng - ZenUML.com

2
liên kết đó là tài liệu của anh chàng đã viết MultiMarkdown. Không chắc chắn những gì bạn đang làm trong codepen.io nhưng tôi tin rằng các tài liệu là chính xác. Hãy ghi nhớ MULTI Markdown KHÔNG Markdown.
masukomi

100

Tôi đã thử nghiệm Github Flavored Markdown một lúc và có thể tóm tắt với bốn quy tắc:

  1. dấu chấm câu sẽ bị bỏ
  2. khoảng trắng hàng đầu sẽ bị loại bỏ
  3. chữ hoa sẽ được chuyển thành chữ thường
  4. khoảng trắng giữa các chữ cái sẽ được chuyển đổi thành -

Ví dụ: nếu phần của bạn được đặt tên này:

## 1.1 Hello World

Tạo một liên kết đến nó theo cách này:

[Link](#11-hello-world)

Điều gì nếu có dấu gạch ngang trong tên? Nó chuyển đổi thành gì? Lưu ý, có khoảng cách giữa các từ và dấu gạch nối. ví dụ: `` `- [My - Header] (# my --- title) # My - Header` `` Điều đó có đúng không?
Spencer Pollock

stackoverflow.com/a/17820138/2908724 cho thuật ngữ về phong cách này. Tôi thích "trường hợp kebab".
giám mục

22

Cách tốt nhất để tạo liên kết nội bộ (liên quan đến các phần) là tạo danh sách nhưng thay vì liên kết, hãy đặt #section hoặc # phần tiêu đề nếu tiêu đề bao gồm khoảng trắng.

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

---- XEM DANH SÁCH ------------------------

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>

Không quan trọng là tiêu đề h1, h2, h3, v.v., bạn luôn đề cập đến nó chỉ bằng một #.
Tất cả các tham chiếu trong danh sách phần nên được chuyển đổi thành văn bản chữ thường như được hiển thị trong ví dụ trên.

Liên kết đến phần nên là chữ thường. Theo cách khác, nó sẽ không hoạt động.
Kỹ thuật này hoạt động rất tốt cho tất cả các biến thể Markdown, cũng như MultiMarkdown.

Hiện tại tôi đang sử dụng Pandoc để chuyển đổi định dạng tài liệu. Nó tốt hơn nhiều so với MultiMarkdown.
Kiểm tra Pandoc tại đây


6
như đã lưu ý trong các bình luận khác ở đây. sẽ không hoạt động trong bất kỳ markdown -> trình chuyển đổi html nào thực sự tuân theo tiêu chuẩn. Tạo thẻ neo trong các tiêu đề chỉ xảy ra trong MỘT SỐ bộ chuyển đổi. Furthemore, họ sẽ không chuyển đổi không gian thành dấu gạch ngang. NÀY KHÔNG THỂ KHÔNG được tính vào.
masukomi

1
Tôi đang sử dụng GitHub Markdown trong trình chỉnh sửa mã Atom có gói tích hợp có tên "Xem trước Markdown". Từ chế độ xem trước, tôi tạo một tệp html bằng menu ngữ cảnh "Lưu dưới dạng HTML ...".
rafr3

vâng, quan điểm của tôi là bạn không thể tin vào kỹ thuật của mình hoạt động ở bất cứ nơi nào khác, và cả câu hỏi cũng như câu trả lời của bạn không cụ thể về việc đánh dấu trong Atom. Câu hỏi thậm chí không phải về Markdown, mà là về MultiMarkdown.
masukomi

Tôi đang sử dụng phương pháp liên kết này nhưng nó không hiệu quả với tôi. không trượt đến phần / tiêu đề đó.
Tom Kustermans

Cho một cái đầu lên đến trường hợp nhạy cảm. Nếu bạn xác định một ## Hellobạn nên gọi nó là[Whatever you want](#Hello)
Victor Augusto

9

Trong mdcharm nó là như thế này:

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

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

2

Đây là giải pháp của tôi (xuất phát từ SaraubhMcâu trả lời của)

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

Cung cấp cho bạn:

Nhảy tới : Hotkey & Markers / Radii / Route Wizard 2.0

Lưu ý những thay đổi từ .đến -và cả sự mất mát của &các liên kết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.