答案1
对于问题的颜色部分,我使用了tcolorbox
该问题答案中给出的方法:更改文本块的背景颜色
对于 markdown 解析,可以借鉴和改编我的回答使用 Markdown 样式的格式进行粗体和斜体。
myquote
在这里,我使用宏将三重反引号解释为环境的分隔符\triplequote
。 我不知道您的问题如何解释单反引号和双反引号,因此我仅使用宏\singlequote
和中定义的占位符来展示如何解析它们\doublequote
。
宏\quoteON
和\quoteOFF
用于启用和禁用主动解析。
\documentclass{article}
\usepackage[most]{tcolorbox}
\definecolor{block-gray}{gray}{0.85}
\newtcolorbox{myquote}{colback=block-gray,grow to right by=-10mm,grow to left by=-10mm,
boxrule=0pt,boxsep=0pt,breakable}
\makeatletter
\def\quoteparse{\@ifnextchar`{\quotex}{\singlequote}}
\def\quotex#1{\@ifnextchar`{\triplequote\@gobble}{\doublequote}}
\makeatother
\def\singlequote#1`{[StartQ]#1[EndQ]\quoteON}
\def\doublequote#1``{[StartQQ]#1[EndQQ]\quoteON}
\long\def\triplequote#1```{\begin{myquote}\parskip 1ex#1\end{myquote}\quoteON}
\def\quoteON{\catcode``=\active}
\def\quoteOFF{\catcode``=12}
\quoteON
\def`{\quoteOFF \quoteparse}
\quoteOFF
\begin{document}
\quoteON
This is a `test of single quoted` material
and this is a ``test of double quoted material``, and this
is the test of a ```triple quoted material. We will make it long
enough to test line wrapping and we will even\\
add a manual linebreak.
Even a new paragraph.``` Resuming normal text.
\quoteOFF
Here should be triple backticks ```xxx```
\end{document}
一旦知道单引号和双引号材料的行为方式,就可以调整这些宏来实现它。