วิธีเพิ่มปุ่มคัดลอกในบล็อคโค้ดสำหรับ RST/อ่านเอกสาร

ฉันได้จัดทำคู่มือ "วิธีการ" ส่วนตัว จัดทำบันทึกและจดบันทึกการศึกษาของฉันในขณะที่ฉันทำไป

ตอนนี้ฉันมีบล็อกโค้ดที่เกือบจะยาวเกินไป ซึ่งเมื่อฉันพบโค้ดที่ยาวเท่านี้ด้วยตัวเอง การพยายามเน้นเฉพาะบล็อกโดยไม่ได้เน้นทั้งหน้าก็น่าหงุดหงิดอยู่เสมอ หรือไม่เพียงพอ

ดังนั้น คำถามของฉันคือ สำหรับ rst (reStructuredText) .. code-block:: มีส่วนเสริมหรือวิธีเพิ่มในปุ่ม copy สำหรับการไฮไลต์อัตโนมัติหรือเพิ่มข้อความลงในคลิปบอร์ดของผู้ใช้โดยอัตโนมัติหรือไม่ หรือนี่จะเป็นโค้ดประเภท html-literal มากกว่าที่ฉันต้องรวมไว้ในบิลด์และอ้างอิงในบล็อกโค้ด หากเป็นเช่นนั้น สิ่งนั้นจะมีหน้าตาเป็นอย่างไรเช่นกัน?


person jpartain89    schedule 28.08.2016    source แหล่งที่มา


คำตอบ (2)


มีแพ็คเกจเฉพาะสำหรับที่เรียกว่า sphinx-copybutton

มันใช้งานง่าย

# Install
pip install sphinx-copybutton
# Declare it in the conf.py
extensions = [
    ...
    'sphinx_copybutton'
    ...
]

เพียงเท่านี้ สร้างเอกสารแล้วปุ่มคัดลอกจะปรากฏขึ้นโดยอัตโนมัติในแต่ละบล็อกโค้ด

person Romain    schedule 15.04.2020
comment
ฉันชอบคำตอบของคุณมากกว่าของฉัน!! ขอบคุณ @โรเมน - person Blaise Pabon; 25.06.2020

ในโครงการสฟิงซ์ การนำเสนอหน้า HTML จะถูกควบคุมโดยใช้ภาษาเทมเพลต (Jinja2 เป็นค่าเริ่มต้น) ดังนั้นคุณจึงสามารถทำให้เพจของคุณโต้ตอบได้มากขึ้นโดยการเพิ่ม Javascript ลงในไฟล์เทมเพลต HTML และมันจะถูกแทรกเมื่อสฟิงซ์ใช้ไฟล์เทมเพลตนั้นเพื่อแสดงเพจ

ค้นหาไดเรกทอรีเทมเพลตของคุณโดยค้นหา templates_path ใน conf.py ของคุณ

เทมเพลต Jinja สามารถขยายซึ่งกันและกันได้ ดังนั้นคุณอาจต้องการไฟล์ที่ขึ้นต้นด้วย {% extends "basic/layout.html" %}

เมื่อคุณค้นหาว่าส่วนใดในลำดับส่วนขยายที่คุณต้องการทำการเปลี่ยนแปลง คุณจะต้องรวม:

  • ส่วนของหน้าที่คุณต้องการให้สิ่งนี้มีผล (โดยทั่วไปคือบล็อกหลัก)
  • CSS ที่มีคลาสสำหรับบล็อกโค้ด (เช่นของฉันคือ class=highlight) ไฟล์ .CSS อาจอยู่ใน docs/source/_static/
  • ตัวอย่าง JavaScript สำหรับสร้างปุ่มและเขียนลงในคลิปบอร์ด (เช่น https://clipboardjs.com/)

ถัดไป สร้างโปรเจ็กต์ Sphinx ในเครื่อง (make html) จนกว่าคุณจะโทรเข้า จากนั้นส่ง repo แหล่งที่มาของคุณไปที่ readthedocs

person Blaise Pabon    schedule 09.11.2016
comment
ดังนั้น นี่ทำให้ฉันเป็นส่วนหนึ่งของเส้นทางนั้น แต่ดูเหมือนฉันกำลังหลงอยู่กับวิธีการวางโค้ดสำหรับโปรเจ็กต์ของฉัน และส่วนหนึ่งเป็นความผิดของฉันที่ไม่ชัดเจนในธีมที่ฉัน กำลังใช้... ฉันกำลังโฮสต์มันทั้งบน Raspberry Pi ของฉันและบน RTD (อ่านเอกสาร) และใช้ธีมของพวกเขา... ดังนั้น ฉันจะใช้ธีมนั้นได้อย่างไร (ซึ่งโดยปกติแล้วไฟล์ของมันจะไม่ได้รวมอยู่ในเอกสารโดยตรง) ไฟล์ในเครื่อง) และขยายออกไป? - person jpartain89; 23.12.2019
comment
@ jpartain89 คุณสามารถ pip install sphinx-rtd-theme ในโครงการท้องถิ่นของคุณ ... จากนั้นการปรับเปลี่ยนใด ๆ ที่คุณทำจะแทนที่การตั้งค่าเริ่มต้นใน RTD ฉันขอโทษที่นี่ไม่ใช่สิ่งที่ตรงไปตรงมากว่านี้ ฉันอยากจะแนะนำวิธีง่ายๆ ในการทำเช่นนี้ แต่ดูเหมือนว่าทุกคนจะมีแนวทางที่แตกต่างกัน - person Blaise Pabon; 26.12.2019