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

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
test/command/6873.md Normal file
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)"]]]
```