From 4de0e5769c670ea9faa66c024342a00326188877 Mon Sep 17 00:00:00 2001 From: Deepak Khatri <lorforlinux@beagleboard.org> Date: Thu, 3 Nov 2022 01:45:50 +0530 Subject: [PATCH] Update rst cheat sheet --- intro/contribution/rst-cheat-sheet.rst | 208 ++++++++++++++++++++++++- 1 file changed, 207 insertions(+), 1 deletion(-) diff --git a/intro/contribution/rst-cheat-sheet.rst b/intro/contribution/rst-cheat-sheet.rst index 1adb70a9..4f472270 100644 --- a/intro/contribution/rst-cheat-sheet.rst +++ b/intro/contribution/rst-cheat-sheet.rst @@ -3,7 +3,33 @@ ReStructuredText Cheat Sheet ############################ -BeagleBoard docs is mostly written with ReStructuredText (r) +BeagleBoard.org docs site uses ReStructuredText (rst) which is a file format [#]_ for textual data used primarily +in the Python programming language community for technical documentation. It is part of the Docutils +project of the Python Doc-SIG, aimed at creating a set of tools for Python similar to Javadoc for Java +or Plain Old Documentation for Perl. If you are new with rst you may go through this rst cheat sheet [#]_ [#]_ [#]_ +chapter to gain enough skills to edit and update any page on the BeagleBoard.org docs site. some things +you should keep in mind while working with rst, + + +1. like Python, RST syntax is sensitive to indentation ! +2. RST requires blank lines between paragraphs + +Text formatting +**************** + +With asterisk you can fomat the text as italic & bold, + +1. Sinlge asterisk (``*``) like ``*emphasis*`` gives you *italic text* +2. Double asterisk (``**``) like ``**strong emphasis**`` gives you **blod text** + +With backquote character (`) you can format the text as link & inline literal. + +1. See `Links`_ section on how single backquote can be used to create a link linke `this <www.beagleboard.org>`_. +2. With double back quotes before and after text you can easily create ``inline lierals``. + +.. note:: + backquote can be found below escape key on most keyboards. + Headings ********* @@ -40,4 +66,184 @@ more) the at least of the heading text, for example: <2> Shows the correct way of setting the document title (H1) with ``#``. + +Code +***** + +For adding a code snippet you can use tab indentation to start. For more refined code snippet display +we have the ``code-block`` and ``literalinclude`` directives as shown below. + + +Indentation +============ + +This the simplest way of adding code snippet in ReStructuredText. + +.. callout:: + + .. code-block:: ReStructuredText + + This is python code:: <1> + <2> + import numpy as np <3> + import math + .. annotations:: + + <1> Provide title of your code snippet and add ``::`` after the text. + + <2> Empty line after the title is required for this to work. + + <3> Start adding your code. + + +Output +------ + +This is python code:: + + import numpy as np + import math + +Code block +=========== + +Simple indentation only supports python program highlighting but, with code block you can +specify which language is your code written in. ``code-block`` also provides better readability +and line numbers support you can useas shown below. + +.. callout:: + + .. code-block:: ReStructuredText + + .. code-block:: python <1> + :linenos: <2> + + import numpy as np <3> + import math + + + .. annotations:: + + <1> Start with adding ``.. code-block::`` and then add language of code like python, bash, javascript, etc. + + <2> Optionally, you can enable line numbers for your code. + + <3> Start adding your code. + +Output +------ + +.. code-block:: python + :linenos: + + import numpy as np + import math + + +Literal include +================ + +To include the entire code or a code snippet from a program file you can use this directive. + +.. callout:: + + .. code-block:: ReStructuredText + + .. literalinclude:: filename.cpp <1> + :caption: <2> + :linenos: <3> + :language: C++ <4> + :lines: 2, 4-7 <5> + :start-after: 4 <6> + :end-before: 7 <7> + :lineno-start: 113 <8> + + .. annotations:: + + <1> Provide the code file destination. + + <2> Provide caption for the code. + + <3> Enable line numbers. + + <4> Set programming language. + + <5> Cherry pick some lines from a big program file. + + <6> Display the code snippet from a specific line number. + + <7> Set a specific line number as end of code snippet. + + <8> Instead of starting line number from 1 start it with some other number. It's useful when you use :lines:, :start-after:, and :end-before:. + +Links +****** + +We have three types of links to use in sphinx, + +1. External links (http(s) links). +2. Implicit links to title (within same rst file). +3. Explicit links (labels that can be used anywhere in the project). + +External links +*************** + +For a simple link to a site the format is + +.. code-block:: rst + + `<www.beagleboard.org>`_ + +this will be rendered as `<www.beagleboard.org>`_. + +You can also include a label to the link as shown below. + +.. code-block:: rst + + `BeagleBoard.org <www.beagleboard.org>`_ + +this will be rendered as `BeagleBoard.org <www.beagleboard.org>`_. + +Implicit Links +*************** + +These are basically the headings inside the rst page which can +be used as a link to that section within document. + +.. code-block:: rst + + `Links`_ + +when rendered it becomes `Links`_ + +Explicit link +************* + +These are special links you can assign to a specific part of the document and reference anywhere +in the project unlike implicit links which can be used only within the document they are defined. +On top of each page you'll see some text like ``.. _rst-cheat-sheet:`` is used to create a +label for this chapter. These are called the explicit links amd you can reference these using two methods. + +.. code-block:: rst + :linenos: + + rst-cheat-sheet_ + +.. code-block:: rst + :linenos: + :lineno-start: 2 + + :ref:`<rst-cheat-sheet>`_ + +Both can be used inside/outside of the document and the rendered link will take you directly to that specific segment. + +.. rubric:: footnotes + +.. [#] `reStructuredText wiki page <https://en.wikipedia.org/wiki/ReStructuredText>`_ + +.. [#] `Sphinx and RST syntax guide (0.9.3) <https://thomas-cokelaer.info/tutorials/sphinx/rest_syntax.html#internal-and-external-links>`_ + +.. [#] `Quick reStructuredText (sourceforge) <https://docutils.sourceforge.io/docs/user/rst/quickref.html#hyperlink-targets>`_ + +.. [#] `A two-page cheatsheet for restructured text <https://github.com/ralsina/rst-cheatsheet>`_ \ No newline at end of file -- GitLab