我正在使用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}
给出了我认为你想要的输出:
因此,我定义了\mwebox
一个可选参数,默认值为 12,这接近边距。然后我11.2
通过反复试验找到了第二个框。