# Rules for documentation
$(o)/%.html: $(o)/%.txt
$(M)"AD $< -> $@"
- $(Q)asciidoc -f $(s)/build/docconfig $<
+ $(Q)asciidoc -e -f $(s)/build/asciidoc.conf -f $(s)/build/asciidoc-xhtml.conf -f /etc/asciidoc/asciidoc.conf -f /etc/asciidoc/xhtml11.conf $<
$(o)/%.txt: $(s)/%.txt
$(M)"ED $< -> $@"
--- /dev/null
+[replacements]
+NULL=<tt>NULL</tt>
+
+[macros]
+(?su)[\\]?(?P<name>\w+):!:(?P<rest>\([^();:]*\))=func_no_reuse
+
+[null-inlinemacro]
+<tt>NULL</tt>
+
+[func_param-inlinemacro]
+<i><tt>{name}</tt></i>
+
+[func_ref-inlinemacro]
+<a href='#fun_{name}'>{caption=<tt>{name}:!:{params}</tt>}</a>
+
+[func_ref_file-inlinemacro]
+<a href='{filename}.html#fun_{name}'>{caption=<tt>{name}:!:{params}</tt>}</a>
+
+[func_anchor-inlinemacro]
+<div class="literalblock" id="fun_{name}"><div class="content"><pre><tt>{prefix}:!:{params}</tt></pre></div></div>
+
+[func_auto_ref-inlinemacro]
+<a href='#fun_{name}'><tt>{all}</tt></a>
+
+[func_no_reuse-inlinemacro]
+{name}{rest}
--- /dev/null
+[macros]
+(?su)[\\]?<<(?P<filename>\w+):(?P<name>[^&;:()<> ]+)(?P<params>\([^&:;]*\);?)(,(?P<caption>[^&;]+))?>>=func_ref_file
+(?su)[\\]?<<(?P<name>[^&;:()<> ]+)(?P<params>\([^&:;]*\);?)(,(?P<caption>[^&;]+))?>>=func_ref
+(?su)[\\]?@(?P<name>\w+)=func_param
+(?su)[\\]?!!f!(?P<prefix>[^!]*(?P<name>\w+))(?P<params>\([^&;:()]*\);?)[^!]*!!!=func_anchor
+(?su)[\\]?(?P<all>(?P<name>\w+)\([^();:]*\))=func_auto_ref
+++ /dev/null
-[replacements]
-@(\w+)=<i><tt>\1</tt></i>
-<([^:;&]+):(\w+)(\([^&;:]*\)):([^&;]+)>=<a href='\1.html#fun_\2'>\4</a>
-<([^:;&]+):(\w+)(\([^&;:]*\))>=<a href='\1.html#fun_\2'><tt>!?\2!?\3!?</tt></a>
-<:(\w+)(\([^&;:]*\)):([^&;]+)>=<a href='#fun_\1'>\3</a>
-<:(\w+)(\([^&;:]*\))>=<a href='#fun_\1'><tt>!?\1!?\2!?</tt></a>
-!!f!((.*\W|)(\w+))(\([^()]*\).*)!!!=<div class="literalblock" id="fun_\3"><div class="content"><pre><tt>!?\1!?\4!?</tt></pre></div></div>
-((\w+)\([^()]*\))=<a href='#fun_\2'><tt>\1</tt></a>
-!\?((.*\W|)(\w+))!\?(\([^()]*\).*)!\?=\1\4
-NULL=<tt>NULL</tt>