如何制作坐标独立的装饰文件?

如何制作坐标独立的装饰文件?

我有这个代码 -

\documentclass{scrartcl}
\usepackage[banglamainfont=Akaash,banglattfont=Akaash]{latexbangla}

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[dvipsnames]{xcolor}
\usepackage[object=vectorian]{pgfornament} % also loads tikz
\begin{document}  
\tikzset{pgfornamentstyle/.style={draw = Periwinkle,
                                  fill = SpringGreen}}   

\begin{center}   
\begin{tikzpicture}[every node/.append style={inner sep=0}]
   \draw [Blue] (-5,-5) rectangle +(10,10);
   \node [anchor=north west] at (-3,5) {\pgfornament[width=6cm]{71}};
   \node [anchor=south west] at (-3,-5) {\pgfornament[width=6cm,,symmetry=h]{71}};
   \node [anchor=north west] at (-5,5) {\pgfornament[width=2cm]{63}};
   \node [anchor=north east] at (5,5) {\pgfornament[width=2cm,,symmetry=v]{63}};
   \node [anchor=south west] at (-5,-5) {\pgfornament[width=2cm,,symmetry=h]{63}};
   \node [anchor=south east] at (5,-5) {\pgfornament[width=2cm,,symmetry=c]{63}};
   \node [anchor=south west,rotate=-90] at (-5,3) {\pgfornament[width=6cm]{46}};
   \node [anchor=south west,rotate=90] at (5,-3) {\pgfornament[width=6cm]{46}};
   \node [Maroon,font=\Huge\bfseries] at (0,0) {কিছু};
   \node [anchor=south] at (0,0.5) {\pgfornament[width=5cm]{69}};
   \node [anchor=north] at (0,-0.5) {\pgfornament[width=5cm,symmetry=c]{69}};
%   \node [anchor=north east,rotate=-30] at (-1,2.5) {\pgfornament[width=2cm]{57}};
%   \node [anchor=north west,rotate=30] at (1,2.5) {\pgfornament[width=2cm,symmetry=v]{57}};

\end{tikzpicture} 
\end{center}

结果是
在此处输入图片描述

我想更改我的文档,以便当我在文档中间添加更多文本(কিছু)时,装饰物会自动向外移动以释放文本空间。

编辑

请参阅以下代码和输出 -

\documentclass{scrartcl}
\usepackage[banglamainfont=Akaash,banglattfont=Akaash]{latexbangla}

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[dvipsnames]{xcolor}
\usepackage[object=vectorian]{pgfornament} % also loads tikz
\begin{document}  
\tikzset{pgfornamentstyle/.style={draw = Periwinkle,
                                  fill = SpringGreen}}   

\begin{center}   
\begin{tikzpicture}[every node/.append style={inner sep=0}]
   \draw [Blue] (-5,-5) rectangle +(10,10);
   \node [anchor=north west] at (-3,5) {\pgfornament[width=6cm]{71}};
   \node [anchor=south west] at (-3,-5) {\pgfornament[width=6cm,,symmetry=h]{71}};
   \node [anchor=north west] at (-5,5) {\pgfornament[width=2cm]{63}};
   \node [anchor=north east] at (5,5) {\pgfornament[width=2cm,,symmetry=v]{63}};
   \node [anchor=south west] at (-5,-5) {\pgfornament[width=2cm,,symmetry=h]{63}};
   \node [anchor=south east] at (5,-5) {\pgfornament[width=2cm,,symmetry=c]{63}};
   \node [anchor=south west,rotate=-90] at (-5,3) {\pgfornament[width=6cm]{46}};
   \node [anchor=south west,rotate=90] at (5,-3) {\pgfornament[width=6cm]{46}};
   \node [Maroon,font=\huge] at (0,0) {
   শিশুকে \begin{tabular}{ll}
   &ভুল শেখাবেন না&সঠিক শেখাবেন।\\
   &লোভ দেখাবেন না &পুরস্কার দেবেন \\
   &নিরুৎসাহিত করেবন না&উৎসাহিত করেবন\\
   &বকুনি দেবেন না&উপেদশ দেবেন \\
  &বেয়াদব বলেবন না&আদব শেখাবেন \\
   &নিঃসঙ্গ  রাখবেন না&সৎসঙ্গ দেবেন \\
&ভয় দেখাবেন না&সাহস দেবেন \\
&লজ্জা দেবেন না& শিখিয়ে দেবেন \\
&ধমক দেবেন না&বুঝতে দেবেন \\
&মিথ্যা বলবেন না&সত্য বলবেন \\
&বেত্রাঘাত করবেন না &স্নেহ করবেন \\
&নিন্দা করেবন না&ভালবাসবেন \\
&অবেহলা করবেন না&গুরুত্ব দেবেন 
&মাওলানা মুরশিদুল আলম , মুহতামিম\\ 
&জামিয়া আরাবিয়া হাজী ইউনুছ (কওমী মাদ্রাসা)\\
    \end{tabular}
    };

   \node [anchor=south] at (0,0.5) {\pgfornament[width=5cm]{69}};
   \node [anchor=north] at (0,-0.5) {\pgfornament[width=5cm,symmetry=c]{69}};
%   \node [anchor=north east,rotate=-30] at (-1,2.5) {\pgfornament[width=2cm]{57}};
%   \node [anchor=north west,rotate=30] at (1,2.5) {\pgfornament[width=2cm,symmetry=v]{57}};

\end{tikzpicture} 
\end{center}
\end{document} 

在此处输入图片描述

编辑2

在我的 MWE 中,我使用孟加拉语文本,因为我制作了带有装饰的孟加拉语文档。但是,您可以使用英语。并且,请记住,您的解决方案也适用于孟加拉语。

可能有助于回答这个问题有没有什么方法可以使用 LaTeX 创建 UML 而无需提供 (x,y) 坐标?

答案1

首先,我要指出的是,您在该表格代码中存在一些错误,您只定义了两列,但使用了三列(&单独的列,因此两列&给出三列)。似乎还\\缺少一个,,其中一行中的可能应该是&。我修复了它,以便它可以正常工作,但由于我看不懂该语言,也不知道它应该是什么样子,所以我可能把它弄乱了。但您需要自己修复它。


我会放置文本节点第一的,然后将所有装饰品放置在其周围。我加载了positioningTikZ 库来帮助完成此操作。如果您有一个名为的节点foo,则可以在其旁边放置另一个节点,例如\node [left=of foo] ..参见第 17.5.3 节高级展示位置选项在 TikZ 手册(针对版本 3.0.1a)中查看该库的描述。

关于旋转节点的锚点,有一点需要注意:锚点也会旋转。因此,对于右侧包含装饰物的节点,其具有rotate=90north锚点位于左边节点的侧面,而不是顶部。

如果你不熟悉-|在角落中放置装饰品的语法,请查看TikZ:箭头的 |- 符号到底起什么作用?

我还展示了两个不同的示例。两者之间的唯一区别在于,在第二个示例中,我计算了中心文本节点的宽度和高度,并设置了相对于这些节点的装饰物的宽度。这就是输出不同的原因:

代码输出

\documentclass{scrartcl}
\usepackage[banglamainfont=Akaash,banglattfont=Akaash]{latexbangla}

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[dvipsnames]{xcolor}
\usepackage[object=vectorian]{pgfornament} % also loads tikz

\tikzset{pgfornamentstyle/.style={draw = Periwinkle,
                                  fill = SpringGreen}}   

\usetikzlibrary{
  positioning, % for left=of, above=of etc.
  calc % for let syntax used in second example
}

\begin{document}  

\begin{center}   
\begin{tikzpicture}[
  every node/.append style={inner sep=0},
  node distance=5mm
]
   \node [Maroon] (text) {
   \begin{tabular}{ll}
     শিশুকে \\
     ভুল শেখাবেন না&সঠিক শেখাবেন।\\
     লোভ দেখাবেন না &পুরস্কার দেবেন \\
     নিরুৎসাহিত করেবন না&উৎসাহিত করেবন\\
     বকুনি দেবেন না&উপেদশ দেবেন \\
     বেয়াদব বলেবন না&আদব শেখাবেন \\
     নিঃসঙ্গ  রাখবেন না&সৎসঙ্গ দেবেন \\
     ভয় দেখাবেন না&সাহস দেবেন \\
     লজ্জা দেবেন না& শিখিয়ে দেবেন \\
     ধমক দেবেন না&বুঝতে দেবেন \\
     মিথ্যা বলবেন না&সত্য বলবেন \\
     বেত্রাঘাত করবেন না &স্নেহ করবেন \\
     নিন্দা করেবন না&ভালবাসবেন \\
     অবেহলা করবেন না&গুরুত্ব দেবেন \\
     মাওলানা মুরশিদুল আলম & মুহতামিম\\ 
     জামিয়া আরাবিয়া হাজী ইউনুছ (কওমী মাদ্রাসা)
    \end{tabular}
    };

  \node [anchor=north] (below) at (text.south) {\pgfornament[width=5cm,symmetry=c]{69}};
  \node [anchor=south] (above) at (text.north) {\pgfornament[width=5cm]{69}};

   \node [rotate=-90, left=of text, anchor=north] (left)  {\pgfornament[width=6cm]{46}};
   \node [rotate=90, right=of text, anchor=north] (right) {\pgfornament[width=6cm]{46}};

   \node [above=of above] (top)    {\pgfornament[width=6cm]{71}};
   \node [below=of below] (bottom) {\pgfornament[width=6cm,symmetry=h]{71}};

   \node [anchor=north west] at (top.north -| left.south)  {\pgfornament[width=2cm]{63}};
   \node [anchor=north east] at (top.north -| right.south) {\pgfornament[width=2cm,symmetry=v]{63}};
   \node [anchor=south west] at (bottom.south -| left.south) {\pgfornament[width=2cm,symmetry=h]{63}};
   \node [anchor=south east] at (bottom.south -| right.south) {\pgfornament[width=2cm,symmetry=c]{63}};

   % draw frame
  \draw [Blue] (current bounding box.south west) rectangle (current bounding box.north east);

\end{tikzpicture} 


\begin{tikzpicture}[
  every node/.append style={inner sep=0},
  node distance=5mm
]
   \node [Maroon] (text) {
   \begin{tabular}{ll}
     শিশুকে \\
     ভুল শেখাবেন না&সঠিক শেখাবেন।\\
     লোভ দেখাবেন না &পুরস্কার দেবেন \\
     নিরুৎসাহিত করেবন না&উৎসাহিত করেবন\\
     বকুনি দেবেন না&উপেদশ দেবেন \\
     বেয়াদব বলেবন না&আদব শেখাবেন \\
     নিঃসঙ্গ  রাখবেন না&সৎসঙ্গ দেবেন \\
     ভয় দেখাবেন না&সাহস দেবেন \\
     লজ্জা দেবেন না& শিখিয়ে দেবেন \\
     ধমক দেবেন না&বুঝতে দেবেন \\
     মিথ্যা বলবেন না&সত্য বলবেন \\
     বেত্রাঘাত করবেন না &স্নেহ করবেন \\
     নিন্দা করেবন না&ভালবাসবেন \\
     অবেহলা করবেন না&গুরুত্ব দেবেন \\
     মাওলানা মুরশিদুল আলম & মুহতামিম\\ 
     জামিয়া আরাবিয়া হাজী ইউনুছ (কওমী মাদ্রাসা)
    \end{tabular}
    };



  \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}}
% 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);

\end{tikzpicture} 
\end{center}
\end{document} 

相关内容