\node
bytikz
实现了文本高亮的效果,除了节点文本不能自动换行之外,其他都还行,有没有更好的方法实现?MWE:
\documentclass{article}
\usepackage{tikz,picture,eso-pic,calc,etoolbox}
\begin{document}
\hspace{20em}yellow green wood \tikz[baseline] \node[fill=gray!20, anchor=base,inner sep=0pt] {yellow green wood yellow green wood }; yellow green wood
\end{document}
答案1
我查看了一些相关问题,可能有一个可以满足您需求的设置。两个要素:
\measureremainder
提供的命令此用户。这使我们能够在使用 tikz 节点之前记录一行中剩余空格的长度。varwidth
来自 varwidth 包的环境。这是一个可变宽度的迷你页面,我们可以使用它里面一个节点。
最简短的序言:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikzpagenodes} % \measureremainder
\usetikzlibrary{calc} % \measureremainder
\usepackage{varwidth} % varwidth environment
\newcommand{\measureremainder}[1]{%
\begin{tikzpicture}[overlay,remember picture]
% measure distance to right text border
\path let \p0 = (0,0), \p1 = (current page text area.east) in
[/utils/exec={\pgfmathsetlength#1{\x1-\x0}\global#1=#1}];
\end{tikzpicture}%
}
\newlength{\whatsleft} % length to be used in nodes
首先,在调用之前立即\tikz
用 保存剩余行的长度\measureremainder{\whatsleft}
。然后,您可以将text width
节点的属性设置为此值:
\begin{document}
This is a very long line of example text before a node.
\measureremainder{\whatsleft}
\tikz[baseline] \node[fill=gray!20, anchor=base,inner sep=0pt, text width=\whatsleft]
{This is example text inside a node.};
This is a long line of example text following a node.
\end{document}
但这意味着节点将始终跨越线的其余部分,这可能并不是我们所希望的:
\begin{document}
This is a long line.
\measureremainder{\whatsleft}\tikz[baseline] \node[fill=gray!20, anchor=base,inner sep=0pt, text width=\whatsleft]
{This is example text inside a node.}; This is a long line of example text.
\end{document}
(困难在于 tikz 节点没有等效的max width
属性)。
\whatsleft
我们可以通过使用环境参数来解决这个问题varwidth
:
\begin{document}
This is a long line.
\measureremainder{\whatsleft}\tikz[baseline]\node[fill=gray!20, anchor=base,inner sep=0pt]
{\begin{varwidth}{\whatsleft}
This is example text inside a node.
\end{varwidth}};
This is a long line of example text following a node.
\end{document}
总而言之,我不认为 tikz 节点真的是为了这个目的而设计的 - 您是否尝试过使用普通的\fbox
和\parbox
命令?(有关这些内容的信息可以在LaTeX/Boxes 维基百科页面。