Câu trả lời:
Take me to [pookie](#pookie)
phải là cú pháp đánh dấu chính xác để nhảy đến điểm neo có tên pookie.
Để chèn một điểm neo của tên đó, hãy sử dụng HTML:
<a name="pookie"></a>
Markdown dường như không bận tâm đến việc bạn đặt điểm neo ở đâu. Một nơi hữu ích để đặt nó là trong một tiêu đề. Ví dụ:
### <a name="tith"></a>This is the Heading
hoạt động rất tốt (Tôi sẽ chứng minh ở đây nhưng trình kết xuất của SO loại bỏ neo.)
id=
so vớiname=
Một phiên bản trước của bài đăng này đã đề xuất sử dụng <a id='tith' />
, sử dụng cú pháp tự đóng cho XHTML và sử dụng id
thuộc tính thay vì name
.
XHTML cho phép mọi thẻ được 'trống' và 'tự đóng'. Đó là, <tag />
viết tắt là <tag></tag>
một cặp thẻ phù hợp với phần thân trống. Hầu hết các trình duyệt sẽ chấp nhận XHTML, nhưng một số thì không. Để tránh các vấn đề về trình duyệt chéo, hãy đóng thẻ rõ ràng bằng cách sử dụng <tag></tag>
, như được đề xuất ở trên.
Cuối cùng, thuộc tính name=
không được dùng trong XHTML, vì vậy ban đầu tôi đã sử dụng id=
, mọi người đều nhận ra. Tuy nhiên, HTML5 hiện tạo một biến toàn cục trong JavaScript khi sử dụng id=
và điều này có thể không nhất thiết là những gì bạn muốn. Vì vậy, sử dụng name=
bây giờ có khả năng thân thiện hơn.
(Cảm ơn Slipp Douglas đã giải thích cho tôi về XHTML và thợ làm móng đã chỉ ra hiệu ứng phụ của HTML5 - xem các bình luận và câu trả lời của thợ làm móng để biết thêm chi tiết. Dường như hoạt động ở mọi nơi, mặc dù nó không được dùng trong XHTML.)name=
<a>
mà không có an href không có nghĩa là nó tự đóng. Trừ khi tôi hoàn toàn điên rồ, cả hai điều này: test-xhtml11 và [ sln.6bitt.com/public/test-html5.html[(test-html5) hiển thị phần còn lại của trang trong thẻ <a>. Đi trước và kiểm tra với một thanh tra web của sự lựa chọn của bạn.
<a id="hi"/> rest of doc
, nhưng nó đã được đối xử như thế nào <a id="hi"> rest of doc</a>
. (Và phân tích thành phần của trang cũng cho thấy điều này.) Lỗi của tôi: Tôi đã xem các yếu tố được hiển thị không phải là nguồn thô. Bạn có nghĩ rằng câu trả lời nên được sửa đổi, theo quan sát này?
name
thuộc tính cũng tạo ra các biến toàn cục (xem stackoverflow.com/questions/3434278/... ), vì vậy bạn cũng có thể sử dụng các id
thuộc tính như là mục tiêu của các URL nhận dạng mảnh, như dự định.
Trên bitbucket.org, giải pháp được bình chọn sẽ không hoạt động. Thay vào đó, khi sử dụng các tiêu đề (với ##), có thể tham chiếu chúng là các neo bằng cách đặt tiền tố là # markdown-header-my-header-name, trong đó # markdown-header- là tiền tố ngầm được tạo bởi trình kết xuất và phần còn lại là tiêu đề tiêu đề thấp hơn với dấu gạch ngang thay thế khoảng trắng.
Thí dụ
## My paragraph title
sẽ tạo ra một mỏ neo như thế này
#markdown-header-my-paragraph-title
Toàn bộ URL trước mỗi tham chiếu neo là tùy chọn, nghĩa là
[Some text](#markdown-header-my-paragraph-title)
tương đương với
[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title)
với điều kiện là họ ở trong cùng một trang
Nguồn: https://bitbucket.org/tutorials/markdowndemo/overview (chỉnh sửa nguồn của tệp .md này và xem cách neo được tạo ra).
## My paragraph title
sẽ tạo ra neo sau user-content-my-paragraph-title
, vì vậy bạn có thể tham chiếu nó với [Một số văn bản] (# user-content-my-Đoạn-title). Tuy nhiên, tôi chưa tìm thấy tài liệu chính thức cho việc này.
Sử dụng a name
. Sử dụng một id
không cần thiết trong HTML 5 và sẽ tạo các biến toàn cục trong JavaScript của bạn
Xem đặc tả HTML 5, 5.9.8 Điều hướng đến một mã định danh phân đoạn - cả hai id
và name
được sử dụng.
Điều quan trọng cần biết là hầu hết các trình duyệt vẫn biến ID thành các biến toàn cục . Đây là một bài kiểm tra nhanh . Sử dụng name
để tránh tạo ra toàn cầu và bất kỳ xung đột nào có thể dẫn đến.
Ví dụ sử dụng tên:
Take me to [pookie](#pookie)
Và neo đích:
### <a name="pookie"></a>Some heading
name
và id
là khác nhau.
fineuploader
, bạn sẽ không thể sử dụng fineuploader
mô-đun. Tránh tạo ra những quả cầu không cần thiết giúp tránh những xung đột đó.
Markdown Anchor hỗ trợ hashmark, do đó, một liên kết đến một neo trong trang sẽ chỉ đơn giản là[Pookie](#pookie)
Tạo neo không thực sự được hỗ trợ trong Gruber Markdown, nhưng là trong các triển khai khác, chẳng hạn như Markdown Extra .
Trong Markdown Extra, ID neo được thêm vào tiêu đề hoặc tiêu đề phụ với {#pookie}
.
Github Flavored Markdown trong các trang kho Git (nhưng không phải trong Gists) tự động tạo ra các neo với một số thẻ đánh dấu trên tất cả các tiêu đề (h1, h2, h3, v.v.), bao gồm:
id="user-content-HEADERTEXT"
class="anchor"
href="#HEADERTEXT"
aria-hidden="true"
(đây là biểu tượng liên kết svg hiển thị khi di chuột qua)Không bao gồm biểu tượng aria / svg, khi một người viết:
# Header Title
Github tạo ra:
<h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>
Do đó, người ta không cần phải làm gì để tạo các liên kết tiêu đề và luôn có thể liên kết với chúng bằng:
[Header Title](#header-title)
Không có cú pháp sẵn có để thực hiện điều này trong cú pháp Markdown ban đầu, nhưng Markdown Extra cung cấp một phương tiện để ít nhất gán ID cho các tiêu đề - sau đó bạn có thể liên kết dễ dàng. Cũng lưu ý rằng bạn có thể sử dụng HTML thông thường trong cả Markdown và Markdown Extra và name
thuộc tính này đã được thay thế bởi id
thuộc tính trong các phiên bản HTML gần đây hơn.
Đối với bất cứ ai đang tìm kiếm một giải pháp cho vấn đề này trong GitBook. Đây là cách tôi làm cho nó hoạt động (trong GitBook). Bạn cần gắn thẻ tiêu đề của bạn một cách rõ ràng, như thế này:
# My Anchored Heading {#my-anchor}
Sau đó liên kết đến neo này như thế này
[link to my anchored heading](#my-anchor)
Giải pháp và các ví dụ bổ sung, có thể được tìm thấy ở đây: https://seadude.gitbooks.io/learn-gitbook/
Đi dự tiệc muộn, nhưng tôi nghĩ rằng sự bổ sung này có thể hữu ích cho những người làm việc cùng rmarkdown
. Trong rmarkdown
đó có hỗ trợ tích hợp cho các tham chiếu đến các tiêu đề trong tài liệu của bạn.
Bất kỳ tiêu đề được xác định bởi
# Header
có thể được tham chiếu bởi
get me back to that [header](#header)
Sau đây là một .rmd
tệp độc lập tối thiểu cho thấy hành vi này. Nó có thể được dệt kim đến .pdf
và .html
.
---
title: "references in rmarkdown"
output:
html_document: default
pdf_document: default
---
# Header
Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text.
Go back to that [header](#header).
Sử dụng Markdown mới nhất, bạn sẽ có thể sử dụng cú pháp sau:
[](){:name='anchorName'}
Điều này sẽ tạo ra HTML sau:
<a name="anchorName"></a>
Nếu bạn muốn neo có văn bản, chỉ cần thêm văn bản neo trong dấu ngoặc vuông:
[Some Text](){:name='anchorName'}
Maruku
biết về cú pháp này. Xem dấu vết
Đối với hầu hết các máy phát điện markdown phổ biến. Bạn có một neo tự tạo đơn giản trong mỗi tiêu đề. Ví dụ với pandoc , neo được tạo sẽ là một trường hợp sên kebab của tiêu đề của bạn.
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
Tùy thuộc vào trình phân tích cú pháp đánh dấu nào bạn sử dụng, neo có thể thay đổi (lấy ví dụ về các câu trả lời của biểu tượng và La muerte Peluda, chúng khác nhau!). Xem babelmark này nơi bạn có thể thấy các neo được tạo tùy thuộc vào việc thực hiện đánh dấu của bạn .