मैं एक जुपीटर / ज्यूपिटरलैब नोटबुक में सामग्री की तालिका कैसे जोड़ सकता हूं?


106

Http://ipython.org/ipython-doc/stable/interactive/notebook.html पर प्रलेखन कहता है

आप शीर्षकों के विभिन्न स्तरों का उपयोग करके अपने कम्प्यूटेशनल दस्तावेज़ के लिए एक वैचारिक संरचना प्रदान कर सकते हैं; स्तर 1 (शीर्ष स्तर) से नीचे स्तर 6 (पैराग्राफ) तक 6 स्तर उपलब्ध हैं। इनका उपयोग बाद में सामग्री की तालिकाओं आदि के निर्माण के लिए किया जा सकता है।

हालाँकि, मैं इस तरह की सामग्री की तालिका बनाने के लिए अपने पदानुक्रमित शीर्षकों का उपयोग करने के बारे में कहीं भी निर्देश नहीं पा सकता हूं। क्या इसे करने का कोई तरीका है?

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


सभी वेबपृष्ठों पर काम करने वाले एक सामान्य समाधान के लिए नीचे @Nikolay का उत्तर देखें .. यह एक शानदार उत्तर है।
इहोवर

मौजूदा Jupyter नोटबुक समाधान के पूरक के लिए, मैंने JupyterLab निर्देशों को नीचे जोड़ा ।
१२:१२ पर जौलोस्टब्लोम

जवाबों:


52

एक ipython nbextension है जो एक नोटबुक के लिए सामग्री की एक तालिका का निर्माण करता है। ऐसा लगता है कि केवल नेविगेशन प्रदान करना है, खंड तह नहीं।


धन्यवाद, मुझे लगता है कि यह वही है जो प्रलेखन का जिक्र कर रहा था।
user2428107

2
जो इसे 4 जुपिटर में स्थापित करना चाहते हैं, उनके लिए यह पोस्ट मदद कर सकती है।
सिरिटिस मेजर

9
बस इसे अद्यतन करने के लिए: अब एक nbextensions एक्सटेंशन है, जो एक साथ बहुत सारे एक्सटेंशन को बंडल करता है और आपको जूपिटर के माध्यम से उन्हें प्रबंधित करने की अनुमति देता है। मुझे लगता है कि यह अब ToC2 पाने का सबसे आसान तरीका है। और यह अन्य प्रासंगिक एक्सटेंशन प्रदान करता है जैसे कि अनुभाग तह। यह github.com/ipython-contrib/jupyter_contrib_nbextensions पर है
user2428107

93

आप Markdown और HTML के साथ मैन्युअल रूप से एक TOC जोड़ सकते हैं। यहां बताया गया है कि मैं कैसे जोड़ रहा हूं:

Jupyter नोटबुक के शीर्ष पर TOC बनाएँ:

## TOC:
* [First Bullet Header](#first-bullet)
* [Second Bullet Header](#second-bullet)

पूरे शरीर में html एंकर जोड़ें:

## First Bullet Header <a class="anchor" id="first-bullet"></a>

code blocks...

## Second Bullet Header <a class="anchor" id="second-bullet"></a>

code blocks...

यह सबसे अच्छा तरीका नहीं हो सकता है, लेकिन यह काम करता है। उम्मीद है की यह मदद करेगा।


15
यह अब मेरे लिए काम नहीं करता है, लेकिन एक समान दृष्टिकोण करता है
जोएलोस्टब्लॉम

2
यह भी "समान दृष्टिकोण" इस प्रकार है: stackoverflow.com/questions/5319754/… tl; dr; <a name="pookie"></a>लंगर के लिए उपयोग करें और लिंक उपयोग के लिए:Take me to [pookie](#pookie)
माइकल

2
आपके मार्कडाउन में सभी शीर्षकों के लिए, नोटबुक स्वचालित रूप से एंकर जोड़ता है। आप अपने ब्राउज़र एड्रेस बार में एंकर को प्रकट करने के लिए, उन शीर्षकों के दाईं ओर क्लिक करें, जिन्हें आप देखते हैं, जब आप उनके ऊपर मंडराते हैं, तो दाईं ओर क्लिक करें। आप एंकर को अपने मार्कडाउन के अनुभागों में मैन्युअल रूप से जोड़ने के बजाय इस एंकर का उपयोग कर सकते हैं। इसके अलावा सबसे अच्छी बात यह है कि यह कोशिकाओं में काम करता है।
अरुजा

1
मेरे पास यह स्क्रिप्ट add_toc.py है जो सामग्री की सूची के साथ शीर्ष पर एक मार्कडाउन सेल जोड़ता है। यदि आप एक्सटेंशन इंस्टॉल नहीं करना चाहते हैं तो एक गरीब व्यक्ति का समाधान।
user2148414


18

कैसे एक ब्राउज़र प्लगइन का उपयोग करने के बारे में जो आपको किसी भी html पृष्ठ का अवलोकन देता है। मैंने निम्नलिखित कोशिश की है:

वे दोनों आइपीथॉन नोटबुक के लिए बहुत अच्छी तरह से काम करते हैं। मैं पिछले समाधानों का उपयोग करने के लिए अनिच्छुक था क्योंकि वे थोड़ा अस्थिर लगते हैं और इन एक्सटेंशनों का उपयोग करके समाप्त हो जाते हैं।


1
बहुत मददगार! लेकिन कुछ बिल्ट-इन फ़ंक्शंस बहुत मायने रखेंगे - विशेष रूप से
मार्कडाउन के

13

मैंने हाल ही में जुपिटर के एक छोटे से विस्तार को ज्यूप्टर- नावबार नाम दिया है । यह मार्कडाउन कोशिकाओं में लिखे गए हेडर की खोज करता है, और एक पदानुक्रमित फैशन में साइडबार में उनसे लिंक प्रदर्शित करता है। साइडबार resizable और बंधनेवाला है। नीचे स्क्रीनशॉट देखें

इसे स्थापित करना आसान है, और 'कस्टम' जेएस और सीएसएस कोड का लाभ उठाते हैं जो कि जब भी कोई नोटबुक खोली जाती है, तो निष्पादित हो जाती है, इसलिए आपको इसे मैन्युअल रूप से चलाने की आवश्यकता नहीं है।

यहां छवि विवरण दर्ज करें


1
वास्तव में इसे स्थापित करना आसान है, और स्रोत कोड भी अनुकूल है। अच्छा प्रोजेक्ट!
कार्सन

13

अब दो पैकेज हैं जिनका उपयोग ज्यूपिटर एक्सटेंशन को संभालने के लिए किया जा सकता है:

  1. jupyter_contrib_nbextensions जो सामग्री की तालिका सहित एक्सटेंशन स्थापित करता है;

  2. jupyter_nbextensions_configurator जो नैबीएक्सटेंशन को सक्षम करने के लिए ग्राफिकल यूजर इंटरफेस प्रदान करता है (प्रत्येक नोटबुक के लिए स्वचालित रूप से लोड होता है) और नेक्स्टटेंशन के विकल्पों को कॉन्फ़िगर करने के लिए नियंत्रण प्रदान करता है।

अपडेट करें:

के हाल के संस्करणों से शुरू jupyter_contrib_nbextensions, कम से कम condaआप के साथ स्थापित करने की आवश्यकता नहीं है jupyter_nbextensions_configuratorक्योंकि यह उन एक्सटेंशन के साथ एक साथ स्थापित हो जाता है।


10

JupyterLab ToC के निर्देश

इस सवाल के पहले से ही कई अच्छे जवाब हैं, लेकिन अक्सर उन्हें जुपिटरलैब में नोटबुक के साथ ठीक से काम करने के लिए ट्वीक की आवश्यकता होती है। JupyterLab से काम करते समय और निर्यात करते समय, एक नोटबुक में ToC को शामिल करने के संभावित तरीकों का विस्तार करने के लिए मैंने यह उत्तर लिखा था।

एक साइड पैनल के रूप में

Jupyterlab-toc विस्तार है जो कर सकते हैं नंबर शीर्षकों, पतन वर्गों, और नेविगेशन के लिए इस्तेमाल किया जा (एक डेमो के लिए नीचे दिए गए gif देखें) एक साइड पैनल के रूप में टीओसी कहते हैं। निम्नलिखित कमांड के साथ स्थापित करें

jupyter labextension install @jupyterlab/toc

यहां छवि विवरण दर्ज करें


एक सेल के रूप में नोटबुक में

इस समय, यह या तो मैट डैनचो के उत्तर के रूप में मैन्युअल रूप से किया जा सकता है, या toc2 jupyter नोटबुक एक्सटेंशन के माध्यम से स्वचालित रूप से क्लासिक नोटबुक इंटरफ़ेस में ।

सबसे पहले, toc2 को jupyter_contrib_nbextensions बंडल के भाग के रूप में स्थापित करें :

conda install -c conda-forge jupyter_contrib_nbextensions

फिर, जुपिटरलैब लॉन्च करें, उस पर जाएं Help --> Launch Classic Notebookऔर उस नोटबुक को खोलें जिसमें आप ToC जोड़ना चाहते हैं। अस्थायी ToC विंडो को ऊपर लाने के लिए टूलबार में toc2 प्रतीक पर क्लिक करें (यदि आपको यह नहीं मिल रहा है तो नीचे gif देखें), गियर आइकन पर क्लिक करें और "नोटबुक ToC सेल जोड़ें" के लिए बॉक्स को चेक करें। नोटबुक को सहेजें और ToC सेल तब होगी जब आप इसे JupyterLab में खोलेंगे। सम्मिलित सेल HTML के साथ एक मार्कडाउन सेल है, यह अपने आप अपडेट नहीं होगा।

Toc2 के डिफ़ॉल्ट विकल्पों को क्लासिक नोटबुक लॉन्च पेज में "Nbextensions" टैब में कॉन्फ़िगर किया जा सकता है। आप उदाहरण के लिए नंबर हेडिंग चुन सकते हैं और ToC को साइड बार के रूप में एंकर कर सकते हैं (जो मुझे व्यक्तिगत रूप से साफ दिखता है)।

यहां छवि विवरण दर्ज करें


एक निर्यात की गई HTML फ़ाइल में

nbconvertHTML को नोटबुक निर्यात करने के लिए उपयोग किया जा सकता है निर्यात किए गए HTML को प्रारूपित करने के नियमों के बाद। toc2विस्तार ऊपर उल्लेख किया है कहा जाता है एक निर्यात प्रारूप कहते हैं html_tocजो सीधे के साथ प्रयोग किया जा सकता है, nbconvert(के बाद कमांड लाइन से toc2विस्तार स्थापित किया गया है):

jupyter nbconvert file.ipynb --to html_toc
# Append `--ExtractOutputPreprocessor.enabled=False`
# to get a single html file instead of a separate directory for images

याद रखें कि शेल कमांड नोटबुक कोशिकाओं में एक विस्मयादिबोधक चिह्न के साथ उन्हें जोड़कर जोड़ा जा सकता है !, इसलिए आप नोटबुक के अंतिम सेल में इस लाइन को चिपका सकते हैं और हमेशा "सभी सेल चलाएं" (जब आप सभी सेल चलाते हैं) तो एक TOC के साथ एक HTML फ़ाइल होती है या जो कुछ भी आउटपुट आप से चाहते हैं nbconvert)। इस तरह, आप उपयोग कर सकते हैंjupyterlab-toc काम करते समय नोटबुक को नेविगेट करने के लिए हैं, और अभी भी निर्यात नोटबुक में क्लासिक नोटबुक इंटरफ़ेस (हमारे बीच प्यूरिस्ट्स के लिए) का उपयोग करने का सहारा लिए बिना टीओसी प्राप्त कर सकते हैं।

ध्यान दें कि ऊपर वर्णित के रूप में डिफ़ॉल्ट toc2 विकल्पों को कॉन्फ़िगर करना, का प्रारूप नहीं बदलेगा nbconver --to html_toc। आपको मेटाडेटा के लिए क्लासिक नोटबुक इंटरफ़ेस में नोटबुक खोलने की आवश्यकता है .ipynb फ़ाइल में लिखा जाना चाहिए (nbconvert निर्यात करते समय मेटाडेटा पढ़ता है) वैकल्पिक रूप से, आप मैन्युअल रूप से JupyterLab साइडबार के नोटबुक टूल टैब के माध्यम से मेटाडेटा जोड़ सकते हैं, जैसे कुछ। पसंद:

    "toc": {
        "number_sections": false,
        "sideBar": true
    }

यदि आप GUI- संचालित दृष्टिकोण पसंद करते हैं, तो आपको क्लासिक नोटबुक खोलने और क्लिक करने में सक्षम होना चाहिए File --> Save as HTML (with ToC) (हालांकि ध्यान दें कि यह मेनू आइटम मेरे लिए उपलब्ध नहीं था)।


ऊपर दिए गए gif को एक्सटेंशन के संबंधित प्रलेखन से जोड़ा जाता है।


मैं साथ काम करना पसंद करता हूं jupyter lab, लेकिन टीओसी को एक बड़े नोटबुक HTML आउटपुट में जोड़ना आवश्यक है। यह निर्दोष रूप से काम करता है! इसे काम करने के लिए कुछ अतिरिक्त चरण थे: 1. TOC2 को सक्षम करें, जैसे conda install -c conda-forge jupyter_nbextensions_configurator, http://localhost:8888/nbextensions"संगतता" को अनचेक करें और "Toc2" को सक्षम करें । 2. शास्त्रीय नोटबोक लॉन्च करें, अपनी आवश्यकताओं के लिए TOC सेटिंग्स को संशोधित करें और Add TOC to Cell(वर्णित के रूप में आगे बढ़ें)। 3. अपनी .ipynbफ़ाइल खोलें और जौनसर्स लैब के"toc" टूल टैब का उपयोग कर मेटाडेटा को कॉपी करें , जॅन्सन टोक्स कॉन्फिगर करें
एलेक्स

6

परिचय

जैसा कि @Ian और @Sergey ने उल्लेख किया है, nbextensions एक सरल समाधान है। उनके जवाब को विस्तृत करने के लिए, यहाँ कुछ और जानकारी दी गई है।

क्या nxtxtensions है?

Nbextensions में एक्सटेंशन का एक संग्रह है जो आपके Jupyter नोटबुक में कार्यक्षमता जोड़ता है।

उदाहरण के लिए, बस कुछ एक्सटेंशन का हवाला देते हैं:

  • विषय - सूची

  • बंधनेवाला शीर्ष

Nbextensions स्थापित करें

स्थापना कॉनडा या पीआईपी के माध्यम से की जा सकती है

# If conda:
conda install -c conda-forge jupyter_contrib_nbextensions
# or with pip:
pip install jupyter_contrib_nbextensions

Js और css फाइल कॉपी करें

निम्न सर्वर की खोज निर्देशिका में नेक्स्टटेंशन की जावास्क्रिप्ट और सीएसएस फाइलों को कॉपी करने के लिए, निम्न कार्य करें:

jupyter contrib nbextension install --user

एक्सटेंशन टॉगल करें

ध्यान दें कि यदि आप टर्मिनल से परिचित नहीं हैं, तो nbextensions configurator स्थापित करना बेहतर होगा (अगला भाग देखें)

आप अपनी पसंद के एक्सटेंशन को सक्षम / अक्षम कर सकते हैं। जैसा कि प्रलेखन में उल्लेख है, सामान्य आदेश है:

jupyter nbextension enable <nbextension require path>

इसके विपरीत, ToC (सामग्री की तालिका) एक्सटेंशन को सक्षम करने के लिए, करें:

jupyter nbextension enable toc2/main

कॉन्फ़िगरेशन इंटरफ़ेस स्थापित करें (वैकल्पिक लेकिन उपयोगी)

जैसा कि इसके प्रलेखन में कहा गया है, nbextensions_configurator nbextensions के लिए कॉन्फ़िगर इंटरफेस प्रदान करता है।

यह निम्नलिखित की तरह दिखता है: nbextensions configurators

यदि आप कोंडा का उपयोग करते हैं तो इसे स्थापित करने के लिए:

conda install -c conda-forge jupyter_nbextensions_configurator

यदि आपके पास Conda नहीं है या Conda के माध्यम से स्थापित नहीं करना चाहते हैं, तो निम्न 2 चरण करें:

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

यह एक महान और विस्तृत जवाब है। मुझे लगता toc2/mainहै कि स्थानीयकरण पर "टेबल ऑफ़ कॉन्टेंट्स (2)" की जाँच करने में सक्षम करने के समान है : 8888 / ट्री # nbextensions_configurator
flow2k

4

यहाँ मेरा दृष्टिकोण है, क्लिंकी है जैसा कि यह है और गितुब में उपलब्ध है :

बहुत पहले नोटबुक सेल में डालें, आयात सेल:

from IPythonTOC import IPythonTOC

toc = IPythonTOC()

कहीं आयात सेल के बाद, genTOCEntry सेल में डाल दिया गया है, लेकिन इसे अभी तक न चलाएं:

''' if you called toc.genTOCMarkdownCell before running this cell, 
the title has been set in the class '''

print toc.genTOCEntry()

GenTOCEntry सेल के नीचे, एक मार्क सेल के रूप में TOC सेल बनाएं:

<a id='TOC'></a>

#TOC

नोटबुक विकसित होने के बाद, एक नया खंड शुरू करने से पहले इस genTOCMarkdownCell को लगाएं:

with open('TOCMarkdownCell.txt', 'w') as outfile:

    outfile.write(toc.genTOCMarkdownCell('Introduction'))

!cat TOCMarkdownCell.txt

!rm TOCMarkdownCell.txt

अपने नोटबुक में उस बिंदु पर genTOCMarkdownCell को स्थानांतरित करें जहां आप एक नया अनुभाग शुरू करना चाहते हैं और अपने नए अनुभाग के लिए स्ट्रिंग शीर्षक genTOCMarkdownCell में तर्क करना चाहते हैं, फिर इसे चलाएं। इसके ठीक बाद एक मार्कडाउन सेल जोड़ें और अपने नए सेक्शन को शुरू करने वाले मार्कडाउन सेल में genTOCMarkdownCell से आउटपुट कॉपी करें। फिर अपने नोटबुक के शीर्ष के पास genTOCEntry सेल पर जाएं और इसे चलाएं। उदाहरण के लिए, यदि आप ऊपर दिखाए गए अनुसार genTOCMarkdownCell को तर्क देते हैं और इसे चलाते हैं, तो आपको यह आउटपुट अपने नए अनुक्रमित अनुभाग के पहले मार्कडाउन सेल में चिपकाने के लिए मिलता है:

<a id='Introduction'></a>

###Introduction

फिर जब आप अपनी नोटबुक के शीर्ष पर जाते हैं और genTocEntry चलाते हैं, तो आपको आउटपुट मिलता है:

[Introduction](#Introduction)

इस लिंक स्ट्रिंग को कॉपी करें और इसे निम्नानुसार टीओसी मार्कडाउन सेल में पेस्ट करें:

<a id='TOC'></a>

#TOC

[Introduction](#Introduction)

जब आप लिंक स्ट्रिंग सम्मिलित करने के लिए TOC सेल को संपादित करते हैं और फिर आप शिफ्ट-एंटर दबाते हैं, तो आपके नए अनुभाग का लिंक एक वेब लिंक के रूप में आपकी नोटबुक तालिका तालिका में दिखाई देगा और इसे क्लिक करने से ब्राउज़र आपके नए अनुभाग में आ जाएगा।

एक बात जो मैं अक्सर भूल जाता हूं, वह यह है कि टीओसी में एक लाइन पर क्लिक करने से ब्राउज़र उस सेल में कूद जाता है, लेकिन उसका चयन नहीं करता है। टीओसी लिंक पर क्लिक करने पर जो भी सेल सक्रिय थी, वह अभी भी सक्रिय है, इसलिए नीचे या ऊपर तीर या शिफ्ट-एंटर अभी भी सक्रिय सेल को संदर्भित करता है, न कि सेल जिसे हम टीओसी लिंक पर क्लिक करके प्राप्त करते हैं।


2

जैसा कि इयान ने पहले ही बताया, आईपीथॉन नोटबुक के लिए मिन्क्र द्वारा टेबल-ऑफ-कंटेंट एक्सटेंशन है। मुझे इसे काम करने के लिए कुछ परेशानी हुई और इस आईपीथॉन नोटबुक को बनाया, जो अर्ध-स्वचालित रूप से विंडोज में माइनर के टेबल की सामग्री विस्तार के लिए फाइलें उत्पन्न करता है। यह 'कर्ल-कमांड' या लिंक का उपयोग नहीं करता है, लेकिन * .js और * .css फ़ाइलों को सीधे आपके IPython नोटबुक-प्रोफ़ाइल-निर्देशिका में लिखता है।

नोटबुक में एक खंड है जिसे 'आपको क्या करना है' कहा जाता है - इसका पालन करें और सामग्री की एक अच्छी फ़्लोटिंग तालिका है:)

यहाँ एक html संस्करण है जो पहले से ही इसे दिखाता है: http://htmlpreview.github.io/?https://github.com/ahambi/140824-TOC/blob/master/A%20floating%20of%20contents.htm

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