获取列表列表中转义符内的当前缩进

获取列表列表中转义符内的当前缩进

我正在使用listings包的lstlisting环境排版源代码。由于我必须在某些行中绘制自定义内容,因此我escapeinside在这些行中使用 来插入tikzpicture

由于这些行可能缩进,我需要知道缩进的长度,或者行的剩余宽度。有什么方法可以访问它吗? \linewidth仍然包含完整的行长度,因此宽度框\linewidth在右侧突出的量与行缩进的量一样多。


例如,考虑这个文档:

\documentclass{article}

\usepackage{tikz}
\usepackage{listings}

\begin{document}

\newcommand{\mwebox}{\begin{tikzpicture}[baseline]\path[fill=black!10, draw=black!0, thick] (0,-0.20) rectangle (5, 0.30);\end{tikzpicture}}

\begin{lstlisting}[escapeinside=~~]
Test
~\mwebox~
Test

    Test
    ~\mwebox~
    Test
\end{lstlisting}

\end{document}

我想将灰色框延伸至行尾。

答案1

这并没有真正回答你的问题,因为我不会自动执行此操作,但我认为你可能需要手动调整你的tikzpicture环境,因为列表手册上说“缩进必须手工完成”。

例如,使用

\documentclass{article}

\usepackage{tikz}
\usepackage{listings}

\begin{document}

\newcommand{\mwebox}[1][12]{\begin{tikzpicture}[baseline]\path[fill=black!10, draw=black!0, thick] (0,-0.20) rectangle (#1, 0.30);\end{tikzpicture}}

\begin{lstlisting}[escapeinside=~~]
Test
~\mwebox~
Test

    Test
    ~\mwebox[11.2]~
    Test
\end{lstlisting}

\end{document}

给出了我认为你想要的输出:

enter image description here

因此,我定义了\mwebox一个可选参数,默认值为 12,这接近边距。然后我11.2通过反复试验找到了第二个框。

相关内容