![如何根据需要将 tikz 图片定位在左、右、上、下?](https://linux22.com/image/407416/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E9%9C%80%E8%A6%81%E5%B0%86%20tikz%20%E5%9B%BE%E7%89%87%E5%AE%9A%E4%BD%8D%E5%9C%A8%E5%B7%A6%E3%80%81%E5%8F%B3%E3%80%81%E4%B8%8A%E3%80%81%E4%B8%8B%EF%BC%9F.png)
\documentclass[12pt]{article}
\usepackage[a4paper,left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}
\usepackage{fontspec}
\usepackage[dvipsnames]{xcolor}
\usepackage[object=vectorian]{pgfornament} % also loads tikz
\usepackage{labels}
\setmainfont{Holden}
\tikzset{pgfornamentstyle/.style={draw = Periwinkle,
fill = SpringGreen}}
\usetikzlibrary{
positioning, % for left=of, above=of etc.
calc % for let syntax used in second example
}
\LabelCols=3% Number of columns of labels per page
\LabelRows=7% Number of rows of labels per page
\LeftBorder=8mm% Space added to left border of each label
\RightBorder=8mm% Space added to right border of each label
\TopBorder=9mm% Space to leave at top of sheet
\BottomBorder=2mm% Space to leave at bottom of sheet
\numberoflabels=22
\begin{document}
% \begin{labels}
% \begin{center}
\begin{tikzpicture}[
every node/.append style={inner sep=0},
node distance=5mm
]
\node [Black] (text) {Vaijan\XeTeXglyph83s Honey};
\path
let
\p1=(text.south west),
\p2=(text.north east),
\n1={\x2-\x1}, % width of text node
\n2={\y2-\y1} % height of text node
in
% in all of the below some fraction of \n1 or \n2 is used to define the width of the ornaments
% set width of these ornaments to half the text node's width
node [anchor=north] (below) at (text.south) {\pgfornament[width=0.5*\n1,symmetry=c]{69}}
node [anchor=south] (above) at (text.north) {\pgfornament[width=0.5*\n1]{69}}
% use \n2 for ornament width here
node [rotate=-90, left=of text, anchor=north] (left) {\pgfornament[width=\n2]{46}}
node [rotate=90, right=of text, anchor=north] (right) {\pgfornament[width=\n2]{46}}
% and \n1 here
node [above=of above] (top) {\pgfornament[width=\n1]{71}}
node [below=of below] (bottom) {\pgfornament[width=\n1,symmetry=h]{71}}
% node [anchor=north] (top) at (text.north) {\pgfornament[width=\n1]{71}}
% node [anchor=south] (bottom) at (text.south) {\pgfornament[width=\n1,symmetry=h]{71}}
% and 25% of width for the corner ornaments
node [anchor=north west] at (top.north -| left.south) {\pgfornament[width=0.25*\n1]{63}}
node [anchor=north east] at (top.north -| right.south) {\pgfornament[width=0.25*\n1,symmetry=v]{63}}
node [anchor=south west] at (bottom.south -| left.south) {\pgfornament[width=0.25*\n1,symmetry=h]{63}}
node [anchor=south east] at (bottom.south -| right.south) {\pgfornament[width=0.25*\n1,symmetry=c]{63}}; % <- note the \path doesn't end until here
% draw frame
\draw [Blue] (current bounding box.south west) rectangle (current bounding box.north east);
\vspace{2cm};
\node [anchor=south] (bellowaddress1) at (below.south) {\pgfornament[width=0.10*\textwidth]{88}};
\setmainfont{Linux Biolinum O}
\tiny
\node [Brown, below, align=center] (bellowaddress3) at (bellowaddress1.south) {Md.Al-Helal, CSE, DU\\ 01515611989};
\node [anchor=south, below] (bellowaddress2) at (bellowaddress3.south) {\pgfornament[width=0.10*\textwidth]{88}};
\end{tikzpicture}
% \end{center}
% \end{labels}
\end{document}
如果我可以将文本定位在稍靠上的位置,则上方间隙将最小化。我该怎么做?
答案1
我删除 node distance=5mm
并添加node [above=0mm of above] (top) {\pgfornament[width=\n1]{71}}
\documentclass[12pt]{article}
\usepackage[a4paper,left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}
\usepackage{fontspec}
\usepackage[dvipsnames]{xcolor}
\usepackage[object=vectorian]{pgfornament} % also loads tikz
\usepackage{labels}
\setmainfont{Holden}
\tikzset{pgfornamentstyle/.style={draw = Periwinkle,
fill = SpringGreen}}
\usetikzlibrary{
positioning, % for left=of, above=of etc.
calc % for let syntax used in second example
}
\LabelCols=3% Number of columns of labels per page
\LabelRows=7% Number of rows of labels per page
\LeftBorder=8mm% Space added to left border of each label
\RightBorder=8mm% Space added to right border of each label
\TopBorder=9mm% Space to leave at top of sheet
\BottomBorder=2mm% Space to leave at bottom of sheet
\numberoflabels=22
\begin{document}
% \begin{labels}
% \begin{center}
\begin{tikzpicture}[
every node/.append style={inner sep=0},
node distance=5mm
]
\node [Black] (text) {Vaijan's Honey};
\path
let
\p1=(text.south west),
\p2=(text.north east),
\n1={\x2-\x1}, % width of text node
\n2={\y2-\y1} % height of text node
in
% in all of the below some fraction of \n1 or \n2 is used to define the width of the ornaments
% set width of these ornaments to half the text node's width
node [anchor=north] (below) at (text.south) {\pgfornament[width=0.5*\n1,symmetry=c]{69}}
node [anchor=south] (above) at (text.north) {\pgfornament[width=0.5*\n1]{69}}
% use \n2 for ornament width here
node [rotate=-90, left=of text, anchor=north] (left) {\pgfornament[width=\n2]{46}}
node [rotate=90, right=of text, anchor=north] (right) {\pgfornament[width=\n2]{46}}
% and \n1 here
node [above=0mm of above] (top) {\pgfornament[width=\n1]{71}}
node [below=of below] (bottom) {\pgfornament[width=\n1,symmetry=h]{71}}
% node [anchor=north] (top) at (text.north) {\pgfornament[width=\n1]{71}}
% node [anchor=south] (bottom) at (text.south) {\pgfornament[width=\n1,symmetry=h]{71}}
% and 25% of width for the corner ornaments
node [anchor=north west] at (top.north -| left.south) {\pgfornament[width=0.25*\n1]{63}}
node [anchor=north east] at (top.north -| right.south) {\pgfornament[width=0.25*\n1,symmetry=v]{63}}
node [anchor=south west] at (bottom.south -| left.south) {\pgfornament[width=0.25*\n1,symmetry=h]{63}}
node [anchor=south east] at (bottom.south -| right.south) {\pgfornament[width=0.25*\n1,symmetry=c]{63}}; % <- note the \path doesn't end until here
% draw frame
\draw [Blue] (current bounding box.south west) rectangle (current bounding box.north east);
\vspace{2cm};
\node [anchor=south] (bellowaddress1) at (below.south) {\pgfornament[width=0.10*\textwidth]{88}};
\setmainfont{Linux Biolinum O}
\tiny
\node [Brown, below, align=center] (bellowaddress3) at (bellowaddress1.south) {Md.Al-Helal, CSE, DU\\ 01515611989};
\node [anchor=south, below] (bellowaddress2) at (bellowaddress3.south) {\pgfornament[width=0.10*\textwidth]{88}};
\end{tikzpicture}
% \end{center}
% \end{labels}
\end{document}
答案2
由于您正在使用 Ti钾使用Zpositioning
库\usetikzlibrary{positioning}
,你可以执行以下操作:
\path ... node [above=1.5mm of above] (top) {...}
如果您未指定1.5mm
,则node distance
使用,这5mm
在您的示例中是这样的(因此大得多)。
完整代码:
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage[object=vectorian]{pgfornament} % also loads tikz
\usetikzlibrary{calc, positioning}
\usepackage{labels}
\tikzset{pgfornamentstyle/.style={draw = Periwinkle,
fill = SpringGreen}}
\LabelCols=3% Number of columns of labels per page
\LabelRows=7% Number of rows of labels per page
\LeftBorder=8mm% Space added to left border of each label
\RightBorder=8mm% Space added to right border of each label
\TopBorder=9mm% Space to leave at top of sheet
\BottomBorder=2mm% Space to leave at bottom of sheet
\numberoflabels=22
\begin{document}
\begin{tikzpicture}[
every node/.append style={inner sep=0},
node distance=5mm,
]
\node [black] (text) {Vaijan\XeTeXglyph83s Honey};
\path
let
\p1=(text.south west),
\p2=(text.north east),
\n1={\x2-\x1}, % width of text node
\n2={\y2-\y1} % height of text node
in
% In all of the below, some fraction of \n1 or \n2 is used to define the
% width of the ornaments set width of these ornaments to half the text
% node's width.
node [anchor=north] (below) at (text.south) {\pgfornament[width=0.5*\n1,symmetry=c]{69}}
node [anchor=south] (above) at (text.north) {\pgfornament[width=0.5*\n1]{69}}
% Use \n2 for ornament width here.
node [rotate=-90, left=of text, anchor=north] (left) {\pgfornament[width=\n2]{46}}
node [rotate=90, right=of text, anchor=north] (right) {\pgfornament[width=\n2]{46}}
% And \n1 here
node [above=1.5mm of above] (top) {\pgfornament[width=\n1]{71}}
node [below=of below] (bottom) {\pgfornament[width=\n1,symmetry=h]{71}}
node [anchor=north west] at (top.north -| left.south)
{\pgfornament[width=0.25*\n1]{63}}
node [anchor=north east] at (top.north -| right.south)
{\pgfornament[width=0.25*\n1,symmetry=v]{63}}
node [anchor=south west] at (bottom.south -| left.south)
{\pgfornament[width=0.25*\n1,symmetry=h]{63}}
node [anchor=south east] at (bottom.south -| right.south)
{\pgfornament[width=0.25*\n1,symmetry=c]{63}}; % <- note the \path
% doesn't end until here
% Draw frame
\draw [blue] (current bounding box.south west) rectangle
(current bounding box.north east);
\node [anchor=south] (bellowaddress1) at (below.south)
{\pgfornament[width=0.10*\textwidth]{88}};
\node [font=\tiny, Brown, below, align=center]
(bellowaddress3) at (bellowaddress1.south)
{Md.Al-Helal, CSE, DU\\ 01515611989};
\node [anchor=south, below] (bellowaddress2) at (bellowaddress3.south)
{\pgfornament[width=0.10*\textwidth]{88}};
\end{tikzpicture}
\end{document}
屏幕截图没有您的文档中指定的精确字体(我没有,但这不会影响答案):
附言:
不要
\vspace
在tikzpicture
Ti之间使用钾Z 语句;使用选项
font=\tiny
更改 Ti 的字体大小钾Z 节点,而不是\tiny
Ti 之间的钾Z 语句。
如果我将 替换\XeTeXglyph83
为'
,则标签将使用默认字体获得正确的撇号: