DocBook reader: add support for citerefentry (#7437)
Originally intended for referring to UNIX manual pages, either part of the same DocBook document as refentry element, or external – hence the manvolnum element. These days, refentry is more general, for example the element documentation pages linked below are each a refentry. As per the *Processing expectations* section of citerefentry, the element is supposed to be a hyperlink to a refentry (when in the same document) but pandoc does not support refentry tag at the moment so that is moot. https://tdg.docbook.org/tdg/5.1/citerefentry.html https://tdg.docbook.org/tdg/5.1/manvolnum.html https://tdg.docbook.org/tdg/5.1/refentry.html This roughly corresponds to a `manpage` role in rST syntax, which produces a `Code` AST node with attributes `.interpreted-text role=manpage` but that does not fit DocBook parser. https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-manpage
This commit is contained in:
parent
ac0a9da6d8
commit
06408d08e5
3 changed files with 9 additions and 1 deletions
|
@ -97,7 +97,7 @@ List of all DocBook tags, with [x] indicating implemented,
|
|||
[x] chapterinfo - Meta-information for a Chapter
|
||||
[ ] citation - An inline bibliographic reference to another published work
|
||||
[ ] citebiblioid - A citation of a bibliographic identifier
|
||||
[ ] citerefentry - A citation to a reference page
|
||||
[x] citerefentry - A citation to a reference page
|
||||
[ ] citetitle - The title of a cited work
|
||||
[ ] city - The name of a city in an address
|
||||
[x] classname - The name of a class, in the object-oriented programming sense
|
||||
|
@ -1112,6 +1112,10 @@ parseInline (Elem e) =
|
|||
"segmentedlist" -> segmentedList
|
||||
"classname" -> codeWithLang
|
||||
"code" -> codeWithLang
|
||||
"citerefentry" -> do
|
||||
let title = maybe mempty strContent $ filterChild (named "refentrytitle") e
|
||||
let manvolnum = maybe mempty (\el -> "(" <> strContent el <> ")") $ filterChild (named "manvolnum") e
|
||||
return $ codeWith ("",["citerefentry"],[]) (title <> manvolnum)
|
||||
"filename" -> codeWithLang
|
||||
"envar" -> codeWithLang
|
||||
"literal" -> codeWithLang
|
||||
|
|
|
@ -725,6 +725,9 @@ These should not be escaped: \$ \\ \> \[ \{
|
|||
<para>
|
||||
More code: <classname>Class</classname> and <type>Type</type>
|
||||
</para>
|
||||
<para>
|
||||
Referencing a man page: <citerefentry><refentrytitle>nix.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
</para>
|
||||
<para>
|
||||
<emphasis role="strikethrough">This is
|
||||
<emphasis>strikeout</emphasis>.</emphasis>
|
||||
|
|
|
@ -188,6 +188,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Sof
|
|||
,Para [Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word."]
|
||||
,Para [Str "This",Space,Str "is",Space,Str "code:",Space,Code ("",[],[]) ">",Str ",",Space,Code ("",[],[]) "$",Str ",",SoftBreak,Code ("",[],[]) "\\",Str ",",Space,Code ("",[],[]) "\\$",Str ",",SoftBreak,Code ("",[],[]) "<html>",Str "."]
|
||||
,Para [Str "More",Space,Str "code:",Space,Code ("",[],[]) "Class",Space,Str "and",Space,Code ("",[],[]) "Type"]
|
||||
,Para [Str "Referencing",Space,Str "a",Space,Str "man",Space,Str "page:",Space,Code ("",["citerefentry"],[]) "nix.conf(5)"]
|
||||
,Para [Strikeout [Str "This",Space,Str "is",SoftBreak,Emph [Str "strikeout"],Str "."]]
|
||||
,Para [Str "Superscripts:",Space,Str "a",Superscript [Str "bc"],Str "d",SoftBreak,Str "a",Superscript [Emph [Str "hello"]],SoftBreak,Str "a",Superscript [Str "hello\160there"],Str "."]
|
||||
,Para [Str "Subscripts:",Space,Str "H",Subscript [Str "2"],Str "O,",Space,Str "H",Subscript [Str "23"],Str "O,",SoftBreak,Str "H",Subscript [Str "many\160of\160them"],Str "O."]
|
||||
|
|
Loading…
Add table
Reference in a new issue