Code docs
This commit is contained in:
parent
bab2a9431d
commit
6266e7373b
1 changed files with 90 additions and 3 deletions
|
@ -1,8 +1,95 @@
|
||||||
@import ../template.nml
|
@import ../template.nml
|
||||||
%<make_doc({"Blocks"}, "Code", "Code")>%
|
%<make_doc({"Blocks"}, "Code", "Code")>%
|
||||||
|
|
||||||
# Code
|
# Full blocks of code
|
||||||
|
|
||||||
```C,
|
NML supports different kind of code blocks. The *full block* modes creates a (optionally titled), numbered code block.
|
||||||
TEST
|
You can also specify the language of the block to get proper highlighting via the [syntect](https://docs.rs/syntect/latest/syntect/) crate.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
#+LAYOUT_BEGIN Split
|
||||||
|
*The following...*
|
||||||
|
``Markdown
|
||||||
|
`\``C, Factorial in C
|
||||||
|
int factorial(int n)
|
||||||
|
{
|
||||||
|
if (n <= 1)
|
||||||
|
return 1;
|
||||||
|
return n * factorial(n - 1);
|
||||||
|
}
|
||||||
|
`\``
|
||||||
|
``
|
||||||
|
#+LAYOUT_NEXT
|
||||||
|
*...gives the following*
|
||||||
|
```C, Factorial in C
|
||||||
|
int factorial(int n)
|
||||||
|
{
|
||||||
|
if (n <= 1)
|
||||||
|
return 1;
|
||||||
|
return n * factorial(n - 1);
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
#+LAYOUT_END
|
||||||
|
|
||||||
|
##+* Properties
|
||||||
|
* ``line_offset``: (number) The number of the first line (defaults: 0)
|
||||||
|
|
||||||
|
# Mini blocks
|
||||||
|
|
||||||
|
Mini blocks are code blocks that can span on a single line (thus blending within a paragraph).
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
* ``Plain Text,\``Rust, str.chars().iter().fold(0, |acc, _| acc + 1)\`` `` → ``Rust, str.chars().iter().fold(0, |acc, _| acc + 1)``
|
||||||
|
* ``Plain Text, \``C++, auto car{ std::make_unique<Car>(...) };\`` `` → ``C++, auto car{ std::make_unique<Car>(...) };``
|
||||||
|
|
||||||
|
Mini blocks can span multiple lines, in which case they become similar to full code blocks with the following differences:
|
||||||
|
- **No title:** Mini blocks cannot have a title at all
|
||||||
|
- **No line numbers:** Line numbers won't be shown
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
#+LAYOUT_BEGIN Split
|
||||||
|
*The following...*
|
||||||
|
``Markdown
|
||||||
|
\``Rust
|
||||||
|
fn real_position(
|
||||||
|
source: Rc<dyn Source>,
|
||||||
|
position: usize
|
||||||
|
) -> (Rc<dyn Source>, usize)
|
||||||
|
{
|
||||||
|
if let Some(parent) = source.parent
|
||||||
|
{
|
||||||
|
return real_position(parent.clone(), source.apply_offsets(position));
|
||||||
|
}
|
||||||
|
return (source.clone(), source.apply_offsets(position));
|
||||||
|
}
|
||||||
|
\``
|
||||||
|
``
|
||||||
|
#+LAYOUT_NEXT
|
||||||
|
*...gives the following*
|
||||||
|
``Rust
|
||||||
|
fn real_position(
|
||||||
|
source: Rc<dyn Source>,
|
||||||
|
position: usize
|
||||||
|
) -> (Rc<dyn Source>, usize)
|
||||||
|
{
|
||||||
|
if let Some(parent) = source.parent
|
||||||
|
{
|
||||||
|
return real_position(parent.clone(), source.apply_offsets(position));
|
||||||
|
}
|
||||||
|
return (source.clone(), source.apply_offsets(position));
|
||||||
|
}
|
||||||
|
``
|
||||||
|
#+LAYOUT_END
|
||||||
|
|
||||||
|
# Code theme
|
||||||
|
|
||||||
|
Code theme can be controlled by the variable ``code.theme``. The default value is ``base16-ocean.dark``.
|
||||||
|
According to [syntect](https://docs.rs/syntect/latest/syntect/highlighting/struct.ThemeSet.html#method.load_defaults)'s
|
||||||
|
documentation, the following themes are enabled:
|
||||||
|
* ``base16-ocean.dark``
|
||||||
|
* ``base16-eighties.dark``
|
||||||
|
* ``base16-mocha.dark``
|
||||||
|
* ``base16-ocean.light``
|
||||||
|
* ``InspiredGitHub``
|
||||||
|
* ``Solarized (dark)``
|
||||||
|
* ``Solarized (light)``
|
||||||
|
|
Loading…
Reference in a new issue