LaTeX reader: more robust parsing of bracketed options.

Improves on 9a40976.  Closes #6873.
This commit is contained in:
John MacFarlane
2020-11-21 12:24:37 -08:00
parent fec8223d3a
commit 7db2cf5d2f
2 changed files with 15 additions and 3 deletions
+8 -3
View File
@@ -559,9 +559,14 @@ tok = try $ spaces >> grouped inline <|> inlineCommand' <|> singleChar'
return $ str t
opt :: PandocMonad m => LP m Inlines
opt = bracketed inline
<|>
(str . T.dropWhile (=='[') . T.dropWhileEnd (==']') <$> rawopt)
opt = do
toks <- try (sp *> bracketedToks <* sp)
-- now parse the toks as inlines
st <- getState
parsed <- runParserT (mconcat <$> many inline) st "bracketed option" toks
case parsed of
Right result -> return result
Left e -> throwError $ PandocParsecError (untokenize toks) e
paropt :: PandocMonad m => LP m Inlines
paropt = parenWrapped inline
+7
View File
@@ -0,0 +1,7 @@
```
% pandoc -f latex -t native --citeproc
\cite[„Etwas […{]} auslassen“]{key}
^D
[WARNING] Citeproc: citation key not found
[Para [Cite [Citation {citationId = "key", citationPrefix = [], citationSuffix = [Str "\8222Etwas",Space,Str "[\8230",Span ("",[],[]) [Str "]"],Space,Str "auslassen\8220"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "(",Strong [Str "key?"],Str "\8222Etwas",Space,Str "[\8230",Span ("",[],[]) [Str "]"],Space,Str "auslassen\8220)"]]]
```