मार्कशीट में क्रॉस-रेफरेंस (नाम लंगर)


511

क्या इसके बराबर के लिए मार्कडाउन सिंटैक्स है:

Take me to <a href="#pookie">pookie</a>

... 

<a name="pookie">this is pookie</a>

जवाबों:


691
Take me to [pookie](#pookie)

Pookie नाम के एंकर पॉइंट पर जाने के लिए सही मार्कडाउन सिंटैक्स होना चाहिए।

उस नाम का एक एंकर पॉइंट डालने के लिए HTML का उपयोग करें:

<a name="pookie"></a>

मार्कडाउन का मन नहीं करता है कि आप एंकर बिंदु को कहां रखें। इसे रखने के लिए एक उपयोगी स्थान हेडर में है। उदाहरण के लिए:

### <a name="tith"></a>This is the Heading

बहुत अच्छा काम करता है। (मैं यहाँ प्रदर्शित करूँगा, लेकिन SO का रेंडर एंकर को बाहर निकाल देगा।)

स्व-समापन टैग और id=बनाम पर ध्यान देंname=

इस पोस्ट के पहले संस्करण में <a id='tith' />एक्सएचटीएमएल के लिए स्व-समापन सिंटैक्स का उपयोग करके और idइसके बजाय विशेषता का उपयोग करने का सुझाव दिया गया था name

XHTML किसी भी टैग को 'खाली' और 'स्व-बंद' होने की अनुमति देता है। अर्थात्, खाली शरीर के साथ टैग की एक जोड़ी के <tag />लिए <tag></tag>, शॉर्ट-हैंड है। अधिकांश ब्राउज़र XHTML स्वीकार करेंगे, लेकिन कुछ नहीं करते हैं। क्रॉस-ब्राउज़र समस्याओं से बचने के लिए <tag></tag>, जैसा कि ऊपर दिया गया है, स्पष्ट रूप से उपयोग करके टैग को बंद कर दें ।

अंत में, विशेषता name=को एक्सएचटीएमएल में पदावनत किया गया था, इसलिए मैंने मूल रूप से उपयोग किया id=, जिसे हर कोई पहचानता है। हालांकि, HTML5 अब उपयोग करते समय जावास्क्रिप्ट में एक वैश्विक चर बनाता है id=, और यह जरूरी नहीं कि आप क्या चाहते हैं। इसलिए, उपयोग name=करना अब अधिक अनुकूल होने की संभावना है।

( XHTML को समझाने के लिए स्लिप डगलस के लिए धन्यवाद , और HTML5 साइड-इफ़ेक्ट को इंगित करने के लिए नैलर - अधिक विस्तार के लिए टिप्पणियों और नेलर के उत्तर को देखें। name=हर जगह काम करता प्रतीत होता है, हालाँकि यह XHTML में पदावनत है।)


1
StackOverflow HTML को रेंडर करने के बाद आप अपने हेडिंग डेमो से लिंक नहीं देख सकते क्योंकि उनका रेंडर आपके <a> टैग को अलग कर रहा है । यही है, आप StackOverflow Markdown में नहीं कर सकते।
स्लिप डी। थॉम्पसन

2
हालाँकि, यह अन्य, अधिक-उदारवादी मार्कडाउन रेंडरर्स में काम करेगा, लेकिन आपको एक बंद करने की आवश्यकता होगी <a> टैग; <a> टैग स्वत: बंद की अनुमति नहीं है। इसके अलावा, मैंने अपने ब्राउज़र को हेडर से बाहर निकलने के लिए पाया जब तक कि हेडर की सामग्री से पहले <a> टैग नहीं है। आपके उदाहरणों के लिए किए गए सुधार।
स्लिप डी। थॉम्पसन

2
वहाँ पकड़ो, चरवाहे। सिर्फ इसलिए कि आपके पास <a>बिना href पर कोई स्टाइल नहीं है, इसका मतलब यह नहीं है कि यह स्वयं समापन है। जब तक मैं पूरी तरह से पागल नहीं हो जाता, तब तक ये दोनों: टेस्ट-एक्सएचटीएमएल 11 और [ sln.6bitt.com/public/test-html5.html जगहों ( test- html5) बाकी पेज को <a> टैग के भीतर रेंडर करें। अपनी पसंद के वेब इंस्पेक्टर के साथ आगे बढ़ें और निरीक्षण करें।
स्लिप डी। थॉम्पसन

4
@ स्लीप: ओके मुझे लगता है कि मैं अब समझ गया हूं। आपको कोडित <a id="hi"/> rest of docकिया गया था, लेकिन यह इलाज किया गया था <a id="hi"> rest of doc</a>। (और पृष्ठ का तत्व विश्लेषण यह दिखाता है, भी।) मेरी गलती: मैंने उन तत्वों को देखा जो कच्चे स्रोत नहीं थे। क्या आपको लगता है कि इस अवलोकन के प्रकाश में उत्तर को संशोधित किया जाना चाहिए?
स्टीव पॉवेल

3
यह nameविशेषता वैश्विक चर भी बनाती है (देखें stackoverflow.com/questions/3434278/… ), इसलिए आप idयथाशीघ्र, खंड पहचानकर्ता URL के लक्ष्य के रूप में विशेषता का उपयोग कर सकते हैं ।
बॉबी जैक

92

Bitbucket.org पर मतदान समाधान काम नहीं करेगा। इसके बजाय, हेडर का उपयोग करते समय (## के साथ), उन्हें # मार्कडाउन-हेडर-माय-हेडर-नेम के रूप में प्रीफ़िक्स करके एंकर के रूप में संदर्भित करना संभव है, जहां # मार्कडाउन-हेडर- रेंडर द्वारा उत्पन्न एक अंतर्निहित प्रीफ़िक्स है, और बाकी स्थानों को बदलने वाले डैश के साथ लोअर-केसेड हेडर शीर्षक है।

उदाहरण

## My paragraph title

इस तरह एक अंतर्निहित लंगर का उत्पादन करेगा

#markdown-header-my-paragraph-title

प्रत्येक एंकर संदर्भ से पहले पूरा URL वैकल्पिक है, अर्थात

[Some text](#markdown-header-my-paragraph-title)

के बराबर है

[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title) 

बशर्ते कि वे एक ही पृष्ठ में हों।

स्रोत: https://bitbucket.org/tutorials/markdowndemo/overview (इस .md फ़ाइल का स्रोत संपादित करें और देखें कि लंगर कैसे बनाए जाते हैं)।


1
यह भी कर सकते हैं। इसके अनुसार: confluence.atlassian.com/bitbucket/… , bitbucket टेबल की सामग्री विस्तार का समर्थन करता है जो दस्तावेज़ हेडर के आधार पर लिंक और एंकर को ऑटो-जनरेट कर सकता है । TOC एक्सटेंशन को यहां प्रलेखित किया गया है: pythonhosted.org/Markdown/extensions/toc.html " जनरेट करें" दस्तावेज़ के आरंभ में इसके लिए टेक्स्ट "TOC] जोड़ें।
बाइनरी फ़िले

8
गितुब में, ## My paragraph titleनिम्नलिखित एंकर का उत्पादन करेंगे user-content-my-paragraph-title, इसलिए आप इसे [कुछ पाठ] (# उपयोगकर्ता-सामग्री-मेरा-पैराग्राफ-शीर्षक) के साथ संदर्भित कर सकते हैं। हालाँकि, मुझे इसके लिए आधिकारिक दस्तावेज नहीं मिले हैं।
23o पर 23

इससे मुझे बिटबकेट पर भी मदद मिली - एक आकर्षण की तरह काम करता है।
स्कॉट बायर्स

1
यह उपयोगी जानकारी है; धन्यवाद। हालांकि, एक्सटेंशन के बिना मार्कडाउन रेंडरर्स आपके लिए ये एंकर उत्पन्न नहीं करेंगे, और शीर्ष नामों को क्लैश करने से एंकर आईडी (या कुछ अचूक भेद करने वाले ट्रिक, जैसे संख्या में गिरावट) का सामना करना पड़ेगा। स्पष्ट एंकर आईडी बेहतर हैं, अधिक नियंत्रणीय हैं, पाठ अपडेट के कारण यादृच्छिक परिवर्तनों के अधीन नहीं हैं (ऊपर दी गई ट्रिक देखें) और सिर्फ हेडर से अधिक एंकरिंग के लिए उपयोगी हैं। दोनों तकनीकों को सामान्य रूप से आवश्यक है।
स्टीव पॉवेल

पर stackedit.io [linky](#header) एक पर्याप्त लंगर था, और काम जब भी सार करने के लिए प्रकाशित किया।
फेलिप अल्वारेज़

66

एक का उपयोग करें nameidएचटीएमएल 5 में एक का उपयोग करना आवश्यक नहीं है और आपके जावास्क्रिप्ट में वैश्विक चर बनाएगा

एचटीएमएल 5 विनिर्देश देखें, ५.९. Nav एक टुकड़ा पहचानकर्ता के लिए नेविगेट करना - दोनों idऔर nameउपयोग किया जाता है।

यह जानना महत्वपूर्ण है कि अधिकांश ब्राउज़र अभी भी आईडी को वैश्विक चर में बदल देते हैं । यहाँ एक त्वरित परीक्षण हैnameग्लोबल्स और किसी भी टकराव से बचने वाले टोटकों का उपयोग करने से परिणाम सामने आ सकते हैं।

एक नाम का उपयोग करके उदाहरण:

Take me to [pookie](#pookie)

और गंतव्य लंगर:

### <a name="pookie"></a>Some heading

5
Downvoting। वैश्विक चर तर्क कमजोर है क्योंकि आपको अपने जेएस में वैसे भी वैश्विक चर को (सीधे) परिभाषित नहीं करना चाहिए, इसलिए कोई संघर्ष नहीं होगा। इसके अलावा, के शब्दार्थ nameऔर idअलग हैं।
मर्नेन लाईबो-कोसर

9
@ MarnenLaibow-Koser कोई भी JS में वैश्विक चरों को परिभाषित करने पर चर्चा नहीं कर रहा है। HTML में एक आईडी बनाने से अधिकांश ब्राउज़रों में एक वैश्विक विंडो बन जाती है।
मीकेमेकाना

14
@ MarnenLaibow-Koser कई पुस्तकालय (यानी, अपने खुद के जेएस नहीं, लेकिन किसी और के) एक एकल वैश्विक का उपयोग करते हैं - उदाहरण के लिए, फाइनअपलोडर। यदि आप एक आईडी के साथ एक तत्व बनाते हैं fineuploader, तो आप fineuploaderमॉड्यूल का उपयोग करने में असमर्थ होंगे । अनावश्यक ग्लोबल्स बनाने से बचने से उन संघर्षों से बचने में मदद मिलती है।
मीकमेकाना

5
मुझे उस मामले के कुछ परीक्षण चलाने और यह पता लगाने में दिलचस्पी होगी कि कौन सी मिसाल लेता है। मैं सैद्धांतिक मुद्दे की सराहना करता हूं, लेकिन क्लाइंट-साइड विकास के वर्षों में, मैंने कभी भी किसी क्लाइंट-साइड जेएस को आईडी ब्रेक नहीं दिया है (बशर्ते एचटीएमएल अन्यथा मान्य था)। जब तक मैं वास्तविक समस्याओं में भाग नहीं लेता तब तक मैं उनका उपयोग जारी रखूँगा।
मार्नेन लाइबो-कोसर

2
@ MarnenLaibow-Koser I (और कई अन्य) ने HTML आईडी को वास्तविक जावास्क्रिप्ट को तोड़ दिया है - आप जिस टिप्पणी का जवाब दे रहे हैं उसमें एक बहुत ही व्यावहारिक उदाहरण है! कई स्टाइलगाइड और कंपनियां हैं जो हमेशा एकल के लिए भी कक्षाओं का उपयोग करती हैं, और यही कारण है।
मिकमेकाना

17

मार्कडाउन एंकर हैशमार्क का समर्थन करता है, इसलिए पृष्ठ में एक एंकर के लिए लिंक बस होगा[Pookie](#pookie)

एंकर बनाना वास्तव में ग्रुबर मार्कडाउन में समर्थित नहीं है, लेकिन अन्य कार्यान्वयन में है, जैसे कि मार्कडाउन एक्स्ट्रा

मार्कडाउन एक्स्ट्रा में, एंकर आईडी को हेडर या सबहेड के साथ जोड़ा जाता है {#pookie}

Github फ्लेवर्ड Markdown Git भंडार पन्नों में (लेकिन gists में नहीं) स्वचालित रूप से लंगर उत्पन्न सभी हेडर पर कई मार्कअप टैग (H1, H2, H3, आदि) के साथ, जिनमें शामिल हैं:

  • id="user-content-HEADERTEXT"
  • class="anchor"
  • href="#HEADERTEXT"
  • aria-hidden="true" (यह एक svg लिंक आइकन के लिए है जो माउसओवर पर प्रदर्शित होता है)

Aria / svg आइकन को छोड़कर, जब कोई लिखता है:

  • # Header Title

गीथूब उत्पन्न करता है:

  • <h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>

इसलिए, हेडर लिंक बनाने के लिए किसी को कुछ नहीं करना चाहिए, और हमेशा उनके साथ लिंक कर सकते हैं:

  • से लिंक करें [Header Title](#header-title)

16

मूल मार्कडाउन सिंटैक्स में ऐसा करने के लिए कोई आसानी से उपलब्ध सिंटैक्स नहीं है, लेकिन मार्कडाउन एक्सट्रा कम से कम हेडर को आईडी असाइन करने का एक साधन प्रदान करता है - जिसे आप तब आसानी से लिंक कर सकते हैं। यह भी ध्यान दें कि आप मार्कडाउन और मार्कडाउन एक्स्ट्रा दोनों में नियमित रूप से HTML का उपयोग कर सकते हैं, और यह कि एचटीएमएल के अधिक हाल के संस्करणों में विशेषता nameद्वारा सुपरसीड किया गया है id


9

जो कोई भी GitBook में इस समस्या का हल ढूंढ रहा है। यह है कि मैंने इसे कैसे काम किया (GitBook में)। आपको अपने हेडर को स्पष्ट रूप से टैग करना होगा, जैसे:

# My Anchored Heading {#my-anchor}

फिर इस तरह से इस लंगर से लिंक करें

[link to my anchored heading](#my-anchor)

समाधान और अतिरिक्त उदाहरण, यहां देखे जा सकते हैं: https://seadude.gitbooks.io/learn-gitbook/


धन्यवाद! यह काम! यह उत्कीर्ण होना चाहिए!
डेक्सटर

सबसे बढ़िया उत्तर! धन्यवाद
invis

7

पार्टी के लिए देर से, लेकिन मुझे लगता है कि यह जोड़ साथ काम करने वाले लोगों के लिए उपयोगी हो सकता है rmarkdown। मेंrmarkdown वहाँ में निर्मित अपने दस्तावेज़ में शीर्षलेख के लिए संदर्भ के लिए समर्थन कर रहा है।

द्वारा परिभाषित कोई भी हेडर

# Header

द्वारा संदर्भित किया जा सकता है

get me back to that [header](#header)

निम्नलिखित एक न्यूनतम स्टैंडअलोन .rmdफ़ाइल है जो इस व्यवहार को दिखाती है। इसे .pdfऔर बुना जा सकता है .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).

4

नवीनतम मार्कडाउन का उपयोग करते हुए, आपको निम्नलिखित सिंटैक्स का उपयोग करने में सक्षम होना चाहिए:

[](){:name='anchorName'}

यह निम्नलिखित HTML बनाना चाहिए:

<a name="anchorName"></a>

यदि आप चाहते थे कि लंगर में पाठ हो, तो वर्ग कोष्ठक में लंगर पाठ जोड़ें:

[Some Text](){:name='anchorName'}


ऐसा लगता है कि केवल Marukuइस सिंटैक्स के बारे में पता है। बेबीलमार्क देखें।
उलीसे बीएन

3

सबसे आम मार्कडाउन जनरेटर के लिए। आपके पास प्रत्येक हेडर में एक साधारण स्व-निर्मित एंकर है। उदाहरण के लिए पंडोक के साथ , उत्पन्न एंकर आपके हेडर का कबाब केस होगा।

 echo "# Hello, world\!" | pandoc
 # => <h1 id="hello-world">Hello, world!</h1>

जिस मार्काड पार्सर का आप उपयोग करते हैं, उसके आधार पर, एंकर बदल सकता है (सिम्प्रश और ला मूरते पेलुडा के उत्तर की छूट लें, वे अलग हैं!)। इस बाममार्क को देखें जहां आप अपने मार्कडाउन कार्यान्वयन के आधार पर उत्पन्न एंकर देख सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.