Horizontales Ausrichten von Text unterschiedlicher Größe

Horizontales Ausrichten von Text unterschiedlicher Größe

Ich möchte zwei Knoten, die Text unterschiedlicher Größe enthalten, linksbündig ausrichten, sodass der kleine Text genau links vom großen Text ausgerichtet ist. Dabei stelle ich fest, dass zwischen ihnen eine kleine, aber erkennbare Lücke besteht:

Bildbeschreibung hier eingeben

Ich hätte gerne so etwas wie das hier. Ich habe es erhalten, indem ich die PDF-Datei in Inkscape geöffnet und das Ausrichtungswerkzeug verwendet habe:

Bildbeschreibung hier eingeben

Ein kleiner Unterschied, sicherlich; aber ich bin eigen. Gibt es eine bessere Möglichkeit, den Text als solchen auszurichten, als dies manuell zu tun?

Das obige Beispiel wurde durch den folgenden Code generiert:

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \usetikzlibrary{positioning}

    \node[anchor=text] (largetext) {
        \Huge Large text.};
    \node[below=.4cm of largetext.text, anchor=text] (smalltext) {
        \large small text.};

    \draw[red] (largetext.text) ++ (0,.7) -- (smalltext.text);
\end{tikzpicture}

\end{document}

Antwort1

Dies ist keine zufriedenstellende Antwort, sondern eher ein Rahmen:

Die Idee ist, dass TikZ erwartet von Benutzern, dass sie Schriftbefehle mit font =und übergeben node font =. Diese Befehle werden für die spätere Verwendung in \tikz@textfontund gespeichert \tikz@node@textfont. Zumindest dieser Teil kann also automatisiert werden.

Sobald der gewünschte Offset berechnet ist, gibt es zwei Möglichkeiten

  • Verschieben Sie den Knoten durch einfaches Übergeben xshift = -offset. Dadurch werden die Anker für die zukünftige Positionierung beeinflusst.
  • negative Klebstoffe hinzufügen; dies kann durch Neudefinition erfolgen \tikz@text@action. Tatsächlich wird dieser Befehl neu definiert, wenn der Benutzer text ragged lefteinen beliebigen Textausrichtungsstil übergibt.

Jetzt fassen wir alles, was Sie getan haben, in einen Stilschlüssel zusammen. Wenn Sie für verschiedene Anfangsbuchstaben unterschiedliche Offsets wünschen, können Sie einen Stil mit Argument(en) definieren.


Im folgenden Beispiel habe ich den doppelten Abstand zwischen Aund Vals Versatz verwendet. Ich sage nicht, dass das richtig ist. Aber \XeTeXglyphboundses könnte sein, dass Sie nicht das richtige Ergebnis erhalten. Der Grund ist derselbe, warum wirÜberschwingen).


\documentclass[tikz]{standalone}
\usepackage{fontspec}
\setmainfont{Futura}

\begin{document}

\makeatletter
\tikzset{
    distil kerning/.code={%
        \let\oldtempselectfont\pgfmath@selectfont%
        \def\pgfmath@selectfont{\tikz@node@textfont\tikz@textfont\oldtempselectfont}
        \pgfmathsetmacro\pgfkerningcorrection{width("V")+width("A")-width("VA")}
        \xdef\pgfkerningcorrection{\pgfkerningcorrection}
        \let\pgfmath@selectfont\oldtempselectfont
    },
    node correction by kerning/.style={
        distil kerning,
        xshift=-\pgfkerningcorrection*2
    },
    ncbk/.style=node correction by kerning
}
\makeatother

\tikz\draw foreach\A[count=\i]in{A,...,G}{(0,\i*\i/7)node[right,font=\fontsize{\i0}{0}\selectfont,ncbk]{\A: text of size \i0.}};
\tikz\draw foreach\A[count=\i]in{A,...,G}{(0,\i*\i/7)node[right,font=\fontsize{\i0}{0}\selectfont     ]{\A: text of size \i0.}};

\end{document}

verwandte Informationen