TikZ简单节点和标签

TikZ简单节点和标签

我对这方面很陌生TikZ,正在尝试绘制标题页的一些基本形状。

我想将标签右对齐到右上角,node以便无论标签有多长,它都能保持在原位。我已接近我想要的效果,但如果标签太长,则会溢出页面。

我非常肯定这远非最好的方法,并且我完全愿意接受建议。

奖励问题

我还没有研究过这些问题,但我想我可以问一下:

  1. 是否可以保持节点的定位相似而周围没有矩形以删除边框?

  2. 我可以设置标题容器的最小尺寸,但让它根据标签的宽度扩展吗?

平均能量损失

\documentclass[draft]{article}
\usepackage{mwe}
\usepackage{tikz}
\usepackage[showframe]{geometry}
\begin{document}
\begin{titlepage}
  \begin{figure}[h]
    \begin{tikzpicture}
      \fill[red] (0,0) rectangle (.1\textwidth,1);
      \fill[blue] (.12\textwidth,0) rectangle (\textwidth,1);
      \filldraw[draw=black,fill=white] (.05\textwidth,-0.5) rectangle (.4\textwidth,1.5) node[pos=0.5] {Title};
      \draw (0,-.5) rectangle (\textwidth, 1.5) node[pos=.9] {Some very long subtitle};
    \end{tikzpicture}
  \end{figure}
  \vfill
\end{titlepage}
\end{document}

结果

实际的

答案1

猜测一下——您想要这样的东西吗?

标题布局

minimum width并且minimum height可以用作nodes 的选项,让其按照其名称执行操作,即节点将在必要时扩展。通过node直接放置 s 而不是使用路径来放置它们,我们可以利用anchor来确定它们的位置。anchor=north east使用节点的右上角进行放置。如果我们将其放置在文本块的右上角,我们就会得到(我认为)所需的结果。

我认为放置节点后绘制红线/蓝线更容易,使用backgrounds库将线放在title节点后面。

\documentclass[draft]{article}
\usepackage{tikz,tikzpagenodes}
\usetikzlibrary{backgrounds}
\usepackage[showframe]{geometry}
\begin{document}
\begin{titlepage}
  \begin{tikzpicture}[remember picture,overlay]
    \node (subtitle) [anchor=north east] at (current page text area.north east) {Some very, very, very, repetitive and long subtitle};
    \node (title) [draw, fill=white, anchor=north west, minimum width=.35\textwidth, minimum height=20mm] at ([xshift={.05\textwidth+\parindent}, yshift=-0.5]current page text area.north west) {Title};
    \begin{scope}[on background layer]
      \draw [red, line width=10mm] (title.west -| current page text area.west) -- (title.center);
      \draw [blue, line width=10mm] (title.center) -- (title.west -| current page text area.east) ;
    \end{scope}
  \end{tikzpicture}
\end{titlepage}
\end{document}

或者你可能想要

更加贴合

可以通过将节点归零来inner xsep实现subtitle

\node (subtitle) [anchor=north east, inner xsep=0pt] at (current page text area.north east) {Some very, very, very, repetitive and long subtitle};

相关内容