我想在列表环境中添加一些 tikz。当代码不长(少于一页)时,tikz 的位置没有任何问题。
但是当代码很长时,tikz 会显示在错误的页面上。长代码的一个最小示例如下。
\documentclass{article}
\usepackage{tikz}
\usepackage{listings}
\usetikzlibrary{positioning}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\begin{document}
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
\begin{lstlisting}[escapechar= !]
a
a
a
a
a
a
THIS IS THE TEXT. !\tikzmark{a}!
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
\end{lstlisting}
\tikz[overlay,remember picture]{\node[fill=green, right=of a] (text) {\scriptsize \Huge HERE};}
\end{document}
我该如何修复它。
答案1
很可能我没有正确解释你的问题,但我想知道把注释放在后面有什么问题\tikzmark
。
\documentclass{article}
\usepackage{tikz}
\usepackage{listings}
\usetikzlibrary{positioning}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\begin{document}
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
a\\
\begin{lstlisting}[escapechar= !]
a
a
a
a
a
a
THIS IS THE TEXT. !\tikzmark{a}! !\tikz[overlay,remember picture]{\node[fill=green, right=of a] (text) {\Huge HERE};}!
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
\end{lstlisting}
\end{document}