Open rmrnc opened 9 years ago
Hi,
Writing an extensive document in Scrivener using MMD/LaTeX, the default acronym and glossary management turned out to be insufficient. Specifically, the missing support for plurals in acronyms combined with a default label creation concatenating an acronym's key with its description (granted, that avoiding acronym collisions is a priority) required a substantial amount of manual HTML comment hacking, e.g., <!--\acp{rfcrequestforcomment}-->
. As MMD's standard support of the acronym package was another limitation in dealing with acronyms and glossaries, I decided to include an optional support for the "glossaries" package as well.
As it affects the MMD's grammar, I haven't tackled another major obstacle: how to extend the acronym definition to accept additional parameters. Ideally, something like the tag=value
attribute scheme used for images would be helpful, e.g.,
*[CA]: "Certification Authority" longplural={Certification Authorities}
creating an entry (for the glossaries package)
\newacronym[longplural={Certification Authorities}]{CA}{CA}{Certification Authority}
It would be also great to allow HTML-commented LaTeX commands in an acronym definition to be carried over, e.g.,
*[CA]: "Certification Authority, see " longplural={Certification Authorities}
\newacronym[longplural={Certification Authorities}]{CA}{CA}{Certification Authority, see \citep{abc}}
Any thoughts on that?
Cheers Remo
Oops. I involuntarily closed the the pull request.
Added support for "acronym plurals" Now an acronym defined as
can be referenced in a text by
Producing
In order to achieve this,
find_abbreviations()
[in writer.c] has to "partially" match an abbreviation and pass a detected plural along the correspondingnode->key
. Thus, a new node key typeABBRPLURAL
has been introduced [in libMultiMarkdown.h] and propagated in allprint_*_node()
functions (though only an implementation for LaTeX has been provided).As the partial abbreviation lookup would've necessitated frequent calls of
strlen()
, performance optimization dictated to extend the node structure by adding alen
element. To avoid an irresponsible memory increase, an intentional small data typeunsigned short int
has been proposed. The chosen data type is (build) configurable by introducing an abstractNODE_LEN
type and severaltypedef
macros [in libMultiMarkdown.h] Repercussions are: an optimizedstrdup()
replacementstrdup_ext()
providing a string's length, optimizations of thetrim_*()
functions, and alteration of all node creations and node copies.Added support for the LaTeX glossaries package Glossaries package provided by Nicola Talbot (see http://www.ctan.org/pkg/glossaries).
For longer documents this package allows a better acronym and glossary management. Due to its preferred workflow, which requires a separate
makeidx
call, it seems impossible to avoid the introduced code changes by applying TeX's\renewcommand
and substituting MMD's supported\ac
and\newacro
commands instead. By specifying the metadata keythe preferred acronym package can be selected. Omitting the "LaTeX Acronym Package" key selects, of course, MMD's default behavior, i.e., "acronym package" support. For this feature the
METAKEY
,ABBREVIATION
, andABBR
switch-case
s inprint_latex_node()
[in latex.c] and thescratch_pad
struct [in parser.h] have been modified. An additionalenum latex_acronym_package
has been introduced. The additionalscratch_pad
elementlatex_acronym_config
is stored in a compact way.Added support for configuring an acronym's label creation
MMD current preference for creating labels is to avoid duplicate acronym keys by concatenating an acronym key with the acronym's text. This makes manual referencing of acronym labels very difficult. Unfortunately, manual acronym referencing in unavoidable, when longer documents are written, e.g., intentionally selecting the full acronym text after its first mentioning, using acronyms in "HTML comment escaped" LaTeX blocks like abstracts, etc.
By specifying the metadata key
the preferred acronym label creation style can be selected. Omitting the "LaTeX Acronym Label style" key selects, of course, MMD's default behavior, i.e., "full" label creation. For this feature the
METAKEY
,ABBREVIATION
, andABBR
switch-case
s inprint_latex_node()
[in latex.c] and thescratch_pad
struct [in parser.h] have been modified. An additionalenum latex_acronym_label_style
has been introduced. The additionalscratch_pad
elementlatex_acronym_config
is stored in a compact way.