Minted 中一系列线条的背景颜色

Minted 中一系列线条的背景颜色

我有一长段代码,用 突出显示minted

我想让背景只围绕一段代码。我该如何实现?

我尝试使用类似的东西escapeinside=||来创建一个彩色框。

在这个例子中,我们想要将背景放在中心部分,\colorbox{green}...\end{minipage}}命令之间。

\begin{minted}[linenos=true,escapeinside=||,breaklines=true]{cpp}
...
    if (is_continuous<T>::value && value.size() == 0)
        ar.write(path, static_cast<typename scalar_type<std::vector<T, A> >::type const *>(NULL), std::vector<std::size_t>());
    else if (is_continuous<T>::value) {
        |\colorbox{green}{\begin{minipage}{\textwidth}|
        std::vector<std::size_t> extent(get_extent(value));
        std::copy(extent.begin(), extent.end(), std::back_inserter(size));
        std::copy(extent.begin(), extent.end(), std::back_inserter(chunk));
        std::fill_n(std::back_inserter(offset), extent.size(), 0);
        ar.write(path, get_pointer(value), size, chunk, offset);
        |\end{minipage}}|
    } else if (value.size() == 0)
        ar.write(path, static_cast<int const *>(NULL), std::vector<std::size_t>());
    else if (is_vectorizable(value)) {
...
\end{minted}

但是,我认为这不能编译,因为escapeinside命令不能留下开放的块。

有什么想法可以实现期望的行为吗?

谢谢。

答案1

一个可能的解决方案(感谢 Tom Bombadil)是将代码分成更多minted块。然而,这也显示出一些问题。(见下文)

我尝试的是以下代码

\begin{minted}[linenos=true,fontsize=\footnotesize,breaklines=true]{cpp}
    ...
    if (is_continuous<T>::value && value.size() == 0)
        ar.write(path, static_cast<typename scalar_type<std::vector<T, A> >::type const *>(NULL), std::vector<std::size_t>());
    else if (is_continuous<T>::value) {
\end{minted}
\begin{minted}[linenos=true,fontsize=\footnotesize,breaklines=true,firstnumber=last,bgcolor=YellowGreen]{cpp}
        /* BEGIN BLOCK 1 */
        std::vector<std::size_t> extent(get_extent(value));
        std::copy(extent.begin(), extent.end(), std::back_inserter(size));
        std::copy(extent.begin(), extent.end(), std::back_inserter(chunk));
        std::fill_n(std::back_inserter(offset), extent.size(), 0);
        ar.write(path, get_pointer(value), size, chunk, offset);
        /* END BLOCK 1 */
\end{minted}
\begin{minted}[linenos=true,fontsize=\footnotesize,breaklines=true,firstnumber=last]{cpp}
    } else if (value.size() == 0)
        ar.write(path, static_cast<int const *>(NULL), std::vector<std::size_t>());
    else if (is_vectorizable(value)) {
    ...
\end{minted}

结果是 在此处输入图片描述

问题如下:

  1. 区块之间的空间分隔
  2. 当有背景时,数字会有不同的偏移量。

有可能解决这些问题吗?

相关内容