想知道如何用 tikz 绘制这种东西:
I ░░░░░░░░░░░░░░░ am a blank space.
...但文本覆盖在点网格上。另外,我希望点网格不是对角线,而是垂直/水平,并使点更小更亮,这样当文本越过它时就不会分散注意力。但它应该是这样的:
I ░Hello░World░░░ am a blank space.
但是“Hello World”的每个字母后面都会有 ░ 淡化的圆点。仅使用此 ░ unicode 字符进行演示,这将改用 tikz。
答案1
你在寻找这样的东西吗?(如果是,我要做的就是引入一个稍微灵活的模式,使得事物看起来很好,并且具有更合理的比例因子,如果不是,那么这可能会帮助其他人更好地理解这个问题。)
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{fadings,patterns}
\newcommand{\PlaceCharOverDots}[2][10]{%
\begin{tikzfadingfrompicture}[name=temp]
\node[transparent!20,scale=#1]
{\bfseries\sffamily \textcolor{white}{#2}};
\end{tikzfadingfrompicture}%
\tikz[baseline=(X.base)]{\node[inner sep=0pt,outer sep=0pt,scale=#1] (X) {\bfseries\sffamily
\textcolor{white}{\strut#2}};
\path[pattern=dots,overlay] (X.north west)
rectangle (X.south east);%
\path[path fading=temp,fit fading=false,overlay,pattern=dots,pattern
color=gray!20] (X.north west)
rectangle (X.south east);}%
}
\begin{document}
\PlaceCharOverDots{Hello world}
\end{document}
编辑:如果您只想将文本放置在点上,只需定义一个稍微密集的点图案并将其用作节点的背景。我\tikzmarknode
在这里推荐它,因为它会自动检测您所处的模式(数学模式、字体大小等),并且具有其他优势,但这并没有利用这些优势。当然,您可以inner sep
根据需要进行调整和/或将其替换为inner xsep
和inner ysep
。
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{tikzmark,patterns}
% based on the rings example on p. 1060 of the pgfmanual as well as
% https://tex.stackexchange.com/a/29367/1952 for the color
\makeatletter
\pgfdeclarepatternformonly[/tikz/radius,\size]{flexible dots}
{\pgfpoint{-0.5*\size}{-0.5*\size}}
{\pgfpoint{0.5*\size}{0.5*\size}}
{\pgfpoint{\size}{\size}}
{
\pgfsetfillcolor{\tikz@pattern@color}
\pgfpathcircle\pgfpointorigin{\pgfkeysvalueof{/tikz/radius}}
\pgfusepath{fill}
}
\makeatother
\tikzset{
radius/.initial=0.1pt,
size/.store in=\size,
size=0.5pt,
}
\begin{document}
\tikzmarknode[pattern=flexible dots,inner sep=2pt]{test}{Hello world}
\end{document}
答案2
这是其中一种方法。TikZ 模式已采用自https://tex.stackexchange.com/a/323867/8650。我没有设置背景层,而是简单地绘制了两次节点。
documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{patterns}
\pgfdeclarepatternformonly{my dots}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{5pt}{5pt}}{\pgfqpoint{2pt}{2pt}}%
{
\pgfpathcircle{\pgfqpoint{0pt}{0pt}}{.4pt}
\pgfusepath{fill}
}
\newcommand{\fade}[1]{%
\begin{tikzpicture}[anchor=base, baseline]
\node[inner sep=0, outer sep=0] (node) {#1};
\fill[pattern=my dots, pattern color=black!10] (node.south west) rectangle (node.north east);
\node[inner sep=0, outer sep=0] (node) {#1};
\end{tikzpicture}}
\begin{document}
\ \\
I \fade{Hello World} am a blank space.\\
I Hello World am a blank space.
\end{document}