LaTeX reader: add Support for glossaries
and acronym
package (#3589)
Acronyms are not resolved by the reader, but acronym and glossary information is put into attributes on Spans so that they can be processed in filters.
This commit is contained in:
parent
708bb8afe4
commit
cf4b40162d
2 changed files with 84 additions and 0 deletions
|
@ -702,6 +702,21 @@ enquote = do
|
|||
then singleQuoted <$> withQuoteContext InSingleQuote tok
|
||||
else doubleQuoted <$> withQuoteContext InDoubleQuote tok
|
||||
|
||||
doAcronym :: PandocMonad m => String -> LP m Inlines
|
||||
doAcronym form = do
|
||||
acro <- braced
|
||||
return . mconcat $ [spanWith ("",[],[("acronym-label", toksToString acro),
|
||||
("acronym-form", "singular+" ++ form)])
|
||||
$ str $ toksToString acro]
|
||||
|
||||
doAcronymPlural :: PandocMonad m => String -> LP m Inlines
|
||||
doAcronymPlural form = do
|
||||
acro <- braced
|
||||
plural <- lit "s"
|
||||
return . mconcat $ [spanWith ("",[],[("acronym-label", toksToString acro),
|
||||
("acronym-form", "plural+" ++ form)]) $ mconcat
|
||||
$ [str $ toksToString acro, plural]]
|
||||
|
||||
doverb :: PandocMonad m => LP m Inlines
|
||||
doverb = do
|
||||
Tok _ Symbol t <- anySymbol
|
||||
|
@ -1371,6 +1386,30 @@ inlineCommands = M.fromList $
|
|||
, ("nocite", mempty <$ (citation "nocite" NormalCitation False >>=
|
||||
addMeta "nocite"))
|
||||
, ("hypertarget", braced >> tok)
|
||||
-- glossaries package
|
||||
, ("gls", doAcronym "short")
|
||||
, ("Gls", doAcronym "short")
|
||||
, ("glsdesc", doAcronym "long")
|
||||
, ("Glsdesc", doAcronym "long")
|
||||
, ("GLSdesc", doAcronym "long")
|
||||
, ("acrlong", doAcronym "long")
|
||||
, ("Acrlong", doAcronym "long")
|
||||
, ("acrfull", doAcronym "full")
|
||||
, ("Acrfull", doAcronym "full")
|
||||
, ("acrshort", doAcronym "abbrv")
|
||||
, ("Acrshort", doAcronym "abbrv")
|
||||
, ("glspl", doAcronymPlural "short")
|
||||
, ("Glspl", doAcronymPlural "short")
|
||||
, ("glsdescplural", doAcronymPlural "long")
|
||||
, ("Glsdescplural", doAcronymPlural "long")
|
||||
, ("GLSdescplural", doAcronymPlural "long")
|
||||
-- acronyms package
|
||||
, ("ac", doAcronym "short")
|
||||
, ("acf", doAcronym "full")
|
||||
, ("acs", doAcronym "abbrv")
|
||||
, ("acp", doAcronymPlural "short")
|
||||
, ("acfp", doAcronymPlural "full")
|
||||
, ("acsp", doAcronymPlural "abbrv")
|
||||
-- siuntix
|
||||
, ("SI", dosiunitx)
|
||||
-- hyphenat
|
||||
|
|
45
test/command/3539.md
Normal file
45
test/command/3539.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
# Commands of [glossaries package](ftp://ftp.tu-chemnitz.de/pub/tex/macros/latex/contrib/glossaries/glossaries-code.pdf)
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
Many programming languages provide \glspl{API}. Each \gls{API} should provide a documentation.
|
||||
^D
|
||||
[Para [Str "Many",Space,Str "programming",Space,Str "languages",Space,Str "provide",Space,Span ("",[],[("acronym-label","API"),("acronym-form","plural+short")]) [Str "APIs"],Str ".",Space,Str "Each",Space,Span ("",[],[("acronym-label","API"),("acronym-form","singular+short")]) [Str "API"],Space,Str "should",Space,Str "provide",Space,Str "a",Space,Str "documentation."]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
\Glsdesc{API} XYZ ist not as performant as \glsdesc{API} ZXY.
|
||||
^D
|
||||
[Para [Span ("",[],[("acronym-label","API"),("acronym-form","singular+long")]) [Str "API"],Space,Str "XYZ",Space,Str "ist",Space,Str "not",Space,Str "as",Space,Str "performant",Space,Str "as",Space,Span ("",[],[("acronym-label","API"),("acronym-form","singular+long")]) [Str "API"],Space,Str "ZXY."]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
\Acrlong{API} XYZ ist not as performant as \acrlong{API} ZXY.
|
||||
^D
|
||||
[Para [Span ("",[],[("acronym-label","API"),("acronym-form","singular+long")]) [Str "API"],Space,Str "XYZ",Space,Str "ist",Space,Str "not",Space,Str "as",Space,Str "performant",Space,Str "as",Space,Span ("",[],[("acronym-label","API"),("acronym-form","singular+long")]) [Str "API"],Space,Str "ZXY."]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
\Acrfull{API} XYZ ist not as performant as \acrfull{API} ZXY.
|
||||
^D
|
||||
[Para [Span ("",[],[("acronym-label","API"),("acronym-form","singular+full")]) [Str "API"],Space,Str "XYZ",Space,Str "ist",Space,Str "not",Space,Str "as",Space,Str "performant",Space,Str "as",Space,Span ("",[],[("acronym-label","API"),("acronym-form","singular+full")]) [Str "API"],Space,Str "ZXY."]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
\Acrshort{API} XYZ ist not as performant as \acrshort{API} ZXY.
|
||||
^D
|
||||
[Para [Span ("",[],[("acronym-label","API"),("acronym-form","singular+abbrv")]) [Str "API"],Space,Str "XYZ",Space,Str "ist",Space,Str "not",Space,Str "as",Space,Str "performant",Space,Str "as",Space,Span ("",[],[("acronym-label","API"),("acronym-form","singular+abbrv")]) [Str "API"],Space,Str "ZXY."]]
|
||||
```
|
||||
|
||||
# Commands of [acronym package](ftp://ftp.mpi-sb.mpg.de/pub/tex/mirror/ftp.dante.de/pub/tex/macros/latex/contrib/acronym/acronym.pdf)
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
Many programming languages provide \acp{API}. Each \ac{API} should provide a documentation.
|
||||
^D
|
||||
[Para [Str "Many",Space,Str "programming",Space,Str "languages",Space,Str "provide",Space,Span ("",[],[("acronym-label","API"),("acronym-form","plural+short")]) [Str "APIs"],Str ".",Space,Str "Each",Space,Span ("",[],[("acronym-label","API"),("acronym-form","singular+short")]) [Str "API"],Space,Str "should",Space,Str "provide",Space,Str "a",Space,Str "documentation."]]
|
||||
```
|
Loading…
Add table
Reference in a new issue