如何在 Tikzpicture 中的节点中写入文本时固定线宽?

如何在 Tikzpicture 中的节点中写入文本时固定线宽?

我正在使用 Tikzpicture 向我的文档添加一个图形,并将标题作为第二个节点内的文本框。

我的文本超出了页面宽度,或者变得杂乱,线条宽度不均匀。该怎么办?

我猜我的问题至少源于两个不同的原因:

  1. 文本框内的线条超出了页面的边界,见下面的示例。但是,当我将文本宽度从 30 厘米更改为 10 厘米时,文本框会完全移到右侧,并且会全部超出页面。因此,我使用 30 厘米(这可能是一个问题)来将文本的开头与左侧对齐。但是,现在:
  2. 如果我尝试使用换行符来修复它以打破长线,那么它们的宽度不再相等。

我知道我不应该使用断线器,但是我该怎么做呢?

例子:

 \documentclass[10pt,a4paper]{moderncv}
 \usepackage{tikz}
 \setlength{\hintscolumnwidth}{2.2cm}
 \begin{document}
     \begin{tikzpicture}[] 
         \node [anchor=north east]
        {\includegraphics[height=8cm]{SomePicture.png}}; 
        \node [below=9cm, align=left,text width=30cm] 
        {
           \footnotesize Yada yada, and some more text. This text has 
           two problems: 1. The lines 
           go beyond the borders of the page. 2. If I use \\ in order to 
           break \\ these \\ lines, then the line width is no longer 
           equal. \\ 
           How do I sort these two problems out? \\ 
           I should not use line breakers, I know, but then what should 
           I do instead? 
 };
 \end{tikzpicture} 
 \end{document}

谢谢!

答案1

文字置于图形下方,宽度与图形宽度相等。

Pic包含图形的节点的宽度是其西锚点和东锚点之间的距离。

为此,通过从 中\p1减去 来计算某个点的坐标。可以从 Pic 节点的 x 坐标 ( ) 获得该节点的宽度。Pic.eastPic.west\x1

使用text width=\x1换行符是自动完成的。

A

\documentclass[10pt,a4paper]{moderncv}

\firstname{FirstName}% needed for modercv
\familyname{LastName}% needed for modercv

\usepackage{tikz}
\usetikzlibrary{positioning}% added <<<<<<<<<<
\usetikzlibrary{calc}% added <<<<<<<<<<
    
\begin{document}    

\begin{tikzpicture}
    \node[inner sep=0pt] (Pic)  {\includegraphics[height=8cm]{example-image-a.jpg}};
    
    \path let \p1=($(Pic.east)-(Pic.west)$) in  node[
      below= 0.5cm of Pic.south, 
      anchor = north,
      inner sep=0pt, 
      text width= \x1, 
      font =\footnotesize] {Yada yada, and some more text. This text has two problems: 1. The lines go beyond the borders of the page. 2. If I use  in order to break  these  lines, then the line width is no longer equal.    How do I sort these two problems out?   I should not use line breakers, I know, but then what should    I do instead? };    
\end{tikzpicture}
    
\end{document}

示例中的“标题”位于图形的中心。可以使用它text width= \x1-<lenght>来添加左右边距。

相关内容