<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="jemdoc-rs, see https://github.com/haozhu10015/jemdoc-rs" />
<link rel="stylesheet" href="jemdoc.css" type="text/css" />
<title>Code Blocks</title>
<script>
MathJax = {
tex: {
inlineMath: [['\\(','\\)']],
displayMath: [['\\[','\\]']],
tags: 'ams'
}
};
</script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js">
</script>
</head>
<link rel="icon" href="img/favicon-jr.svg" type="image/svg+xml" />
<body>
<table summary="Table for page layout." id="tlayout">
<tr valign="top">
<td id="layout-menu">
<div class="menu-category">jemdoc-rs</div>
<div class="menu-item"><a href="index.html">Overview</a></div>
<div class="menu-category">Markup</div>
<div class="menu-item"><a href="formatting.html">Formatting</a></div>
<div class="menu-item"><a href="lists.html">Lists</a></div>
<div class="menu-item"><a href="link.html">Links</a></div>
<div class="menu-item"><a href="images.html">Images</a></div>
<div class="menu-item"><a href="mathjax.html">Equations</a></div>
<div class="menu-category">Blocks</div>
<div class="menu-item"><a href="codeblocks.html" class="current">Code Blocks</a></div>
<div class="menu-item"><a href="tables.html">Tables</a></div>
<div class="menu-item"><a href="infoblocks.html">Info Blocks</a></div>
<div class="menu-category">Configuration</div>
<div class="menu-item"><a href="directives.html">Directives</a></div>
<div class="menu-item"><a href="http://www.example.com" target="_blank">Open in New Tab</a></div>
</td>
<td id="layout-content">
<div id="toptitle">
<h1>Code Blocks</h1>
</div>
<p>Code blocks are delimited by <tt>~~~</tt> and support syntax highlighting for several languages.
</p>
<h2>Basic Syntax</h2>
<div class="codeblock">
<div class="blockcontent"><tt class="tthl">
</tt><pre class="tthl">~~~
</pre><tt class="tthl">{Optional Title}{language}
<br />code here
</tt><pre class="tthl">~~~
</pre><tt class="tthl"></tt></div></div>
<p>The first brace pair is an optional title, the second is the language for highlighting.
</p>
<h2>Python</h2>
<div class="codeblock">
<div class="blocktitle">Hello World</div>
<div class="blockcontent"><pre>
<span class="statement">import</span> numpy <span class="statement">as</span> np
<span class="statement">def</span> greet(name):
<span class="comment"># Say hello to someone.</span>
<span class="statement">print</span>(f<span class="string">"Hello, {name}!"</span>)
<span class="statement">return</span> <span class="builtin">True</span>
<span class="comment"># Create an array <span class="builtin">and</span> call the function</span>
x = np.array([1, 2, 3])
greet(<span class="string">"world"</span>)
</pre></div></div>
<h2>C++</h2>
<div class="codeblock">
<div class="blocktitle">Fibonacci</div>
<div class="blockcontent"><pre>
<span class="operator">#include <iostream></span>
<span class="builtin">int</span> fibonacci(<span class="builtin">int</span> n) {
<span class="statement">if</span> (n <= 1) <span class="statement">return</span> n;
<span class="statement">return</span> fibonacci(n - 1) + fibonacci(n - 2);
}
<span class="builtin">int</span> main() {
<span class="statement">for</span> (<span class="builtin">int</span> i = 0; i < 10; i++) {
std::cout <span class="operator"><<</span> fibonacci(i) <span class="operator"><<</span> " ";
}
<span class="statement">return</span> 0;
}
</pre></div></div>
<h2>Shell</h2>
<div class="codeblock">
<div class="blocktitle">Build and install</div>
<div class="blockcontent"><pre>
<span class="comment"># Clone the repository</span>
<span class="builtin">git</span> clone https://github.com/haozhu10015/jemdoc-rs.<span class="builtin">git</span>
<span class="statement">cd</span> jemdoc-rs
<span class="comment"># Build and install</span>
cargo install --path .
<span class="comment"># Convert jemdoc files</span>
jemdoc-rs -c mysite.conf *.jemdoc
<span class="builtin">echo</span> <span class="string">"Done!"</span>
</pre></div></div>
<h2>Ruby</h2>
<div class="codeblock">
<div class="blocktitle">Ruby example</div>
<div class="blockcontent"><pre>
<span class="statement">class</span> Greeter
<span class="statement">def</span> initialize(name)
@name = name
<span class="statement">end</span>
<span class="statement">def</span> greet
puts <span class="string">"Hello, world!"</span>
<span class="statement">end</span>
<span class="statement">end</span>
Greeter.new(<span class="string">"world"</span>).greet
</pre></div></div>
<h2>MATLAB</h2>
<div class="codeblock">
<div class="blocktitle">MATLAB example</div>
<div class="blockcontent"><pre>
<span class="comment">% Generate random data</span>
x = <span class="statement">randn</span>(1, 100);
y = <span class="statement">cumsum</span>(x);
<span class="comment">% Find the maximum</span>
[val, idx] = <span class="statement">max</span>(y);
<span class="statement">help</span> <span class="statement">cumsum</span>
</pre></div></div>
<h2>Rust</h2>
<div class="codeblock">
<div class="blocktitle">Fibonacci</div>
<div class="blockcontent"><pre>
<span class="statement">use</span> std::collections::HashMap;
<span class="statement">fn</span> fibonacci(n: <span class="builtin">u64</span>, memo: &<span class="statement">mut</span> HashMap<<span class="builtin">u64</span>, <span class="builtin">u64</span>>) -> <span class="builtin">u64</span> {
<span class="statement">if</span> n <= 1 {
<span class="statement">return</span> n;
}
<span class="statement">if</span> <span class="statement">let</span> <span class="builtin">Some</span>(&val) = memo.get(&n) {
<span class="statement">return</span> val;
}
<span class="statement">let</span> result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
memo.insert(n, result);
result
}
<span class="statement">fn</span> main() {
<span class="statement">let</span> <span class="statement">mut</span> memo = HashMap::new();
<span class="statement">for</span> i <span class="statement">in</span> 0..10 {
println!(<span class="string">"fib({}) = {}"</span>, i, fibonacci(i, &<span class="statement">mut</span> memo));
}
}
</pre></div></div>
<h2>jemdoc Syntax</h2>
<p>Use the <tt>jemdoc</tt> language for jemdoc source highlighting. It renders in a monospace font with special handling for jemdoc markers:
</p>
<div class="codeblock">
<div class="blockcontent"><tt class="tthl">
</tt><pre class="tthl"># jemdoc: menu{MENU}{index.html}
</pre><tt class="tthl">== My Page Title
<br />
<br />- A list item
<br />- Another item
<br />: {Term} Definition here.
</tt></div></div>
<h2>Python Interactive</h2>
<p>The <tt>pyint</tt> language highlights Python interactive sessions:
</p>
<div class="codeblock">
<div class="blocktitle">Python REPL</div>
<div class="blockcontent"><pre>
<span class="pycommand">>>> import math</span>
<span class="pycommand">>>> math.sqrt(144)</span>
12.0
<span class="pycommand">>>> print("Hello!")</span>
Hello!
</pre></div></div>
<h2>Raw Blocks</h2>
<p>Use <tt>{}{raw}</tt> to output content verbatim with no wrapping or highlighting:
</p>
<div style="background: #f0f8ff; padding: 15px; border: 1px solid #b0d4f1; border-radius: 5px; margin: 10px 0;">
<strong>Custom HTML block</strong><br/>
This content passes through without any jemdoc processing.
Useful for embedding widgets, iframes, or complex HTML layouts.
</div>
<h2>Code Block Without Title</h2>
<p>Omit the title to get an untitled code block:
</p>
<div class="codeblock">
<div class="blockcontent"><pre>
<span class="statement">print</span>(<span class="string">"No title on this block"</span>)
</pre></div></div>
<h2>Supported Languages</h2>
<table>
<tr class="r1"><td class="c1">Language </td><td class="c2"> Aliases </td></tr>
<tr class="r2"><td class="c1">Python </td><td class="c2"> <tt>python</tt>, <tt>py</tt> </td></tr>
<tr class="r3"><td class="c1">C </td><td class="c2"> <tt>c</tt> </td></tr>
<tr class="r4"><td class="c1">C++ </td><td class="c2"> <tt>c++</tt>, <tt>cpp</tt> </td></tr>
<tr class="r5"><td class="c1">Ruby </td><td class="c2"> <tt>ruby</tt>, <tt>rb</tt> </td></tr>
<tr class="r6"><td class="c1">Rust </td><td class="c2"> <tt>rust</tt>, <tt>rs</tt> </td></tr>
<tr class="r7"><td class="c1">Shell </td><td class="c2"> <tt>sh</tt> </td></tr>
<tr class="r8"><td class="c1">MATLAB </td><td class="c2"> <tt>matlab</tt> </td></tr>
<tr class="r9"><td class="c1">Commented </td><td class="c2"> <tt>commented</tt> </td></tr>
<tr class="r10"><td class="c1">jemdoc </td><td class="c2"> <tt>jemdoc</tt> </td></tr>
<tr class="r11"><td class="c1">Python REPL </td><td class="c2"> <tt>pyint</tt> </td></tr>
<tr class="r12"><td class="c1">Raw HTML </td><td class="c2"> <tt>raw</tt>
</td></tr></table>
<div id="footer">
<div id="footer-text">
Page generated by <a href="https://github.com/haozhu10015/jemdoc-rs" target="_blank">jemdoc-rs</a>.
(<a href="codeblocks.jemdoc">source</a>)
</div>
</div>
</td>
</tr>
</table>
</body>
</html>