如何在 LaTeX 中制作代码块,就像 Markdown 一样

如何在 LaTeX 中制作代码块,就像 Markdown 一样

在 Markdown 中,使用一对 ``` 来表示代码块,

Markdown 代码块

我怎样才能在 LaTeX 中实现它?

我在使用这个数据包csquotes时遇到两个问题:

  • 如何删除双引号
  • 如何添加背景颜色

答案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}

在此处输入图片描述

一旦知道单引号和双引号材料的行为方式,就可以调整这些宏来实现它。

相关内容