将 tikz 锚定在左边距

将 tikz 锚定在左边距

我想在当前行的左边距位置放置一张 tikz 图片。以下是 MWE:

\documentclass{amsart}
\usepackage{tikz}

\begin{document}
\newcommand{\status}[1]{\tikz[overlay]{\node [left=3cm] {\bf#1};}}
    in (here)\status{??} the beginning of the line\\
    towards the middle of end of line (here)\status{?!}
\end{document}

正如预期的那样,

在此处输入图片描述

我知道有at (current page.west)可用的,但这似乎不起作用(而且不是我想要的),而且我在文档/其他地方找不到正确的修复方法。另外,我知道有一个todos包具有类似的功能,但我真的只需要这个简单的部分。

谢谢!

答案1

这是tikzpagenodes提供锚点的包current page text area

\documentclass{amsart}
\usepackage{tikzpagenodes}
\usepackage{showframe}
\usetikzlibrary{tikzmark}

\newcounter{tmp}
\newcommand\status[1]{%
  \stepcounter{tmp}%
  \tikzmark{start-\thetmp}%
  \tikz[remember picture,overlay,baseline=(sta.base)]
    {\node[anchor=east] at (current page text area.west|-{pic cs:start-\thetmp})
    (sta) {\textbf{#1}};}%
}
\begin{document}

test\status{ready!}

test\status{to do!}

\end{document}

在此处输入图片描述

无需tikzpagenodes锚定在 x 坐标处current page west,然后移动一定量\oddsidemargin+\hoffset+1in

\documentclass{amsart}
\usepackage{showframe}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}

\newcounter{tmp}
\newcommand\status[1]{%
  \stepcounter{tmp}%
  \tikzmark{start-\thetmp}%
  \tikz[remember picture,overlay,baseline=(sta.base)]
    {\node[anchor=east] at 
    ( $ (current page.west|-{pic cs:start-\thetmp}) + (\oddsidemargin+\hoffset+1in,0) $ )
    (sta) {\textbf{#1}};}%
}
\begin{document}

test\status{ready!}

test\status{to do!}

\end{document}

相关内容