
작은 텍스트의 정확한 왼쪽이 큰 텍스트의 정확한 왼쪽에 정렬되도록 크기가 다른 텍스트가 포함된 두 노드를 왼쪽 정렬하고 싶습니다. 내가 찾은 것은 그들 사이에 작지만 눈에 띄는 간격이 있다는 것입니다.
내가 원하는 것은 Inkscape에서 PDF를 열고 정렬 도구를 사용하여 얻은 것과 같은 것입니다.
확실히 작은 차이가 있습니다. 하지만 나는 특별하다. 수동으로 정렬하는 것보다 텍스트를 정렬하는 더 좋은 방법이 있습니까?
위의 예는 다음 코드로 생성되었습니다.
\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}
답변1
이는 만족스러운 답변이 아니라 프레임워크입니다.
아이디어는 Ti케이font =
Z는 사용자가 및 를 사용하여 글꼴 명령을 전달할 것으로 예상합니다 node font =
. 해당 명령은 나중에 사용 \tikz@textfont
하기 위해 저장됩니다 \tikz@node@textfont
. 그러면 최소한 이 부분은 자동화가 가능합니다.
원하는 오프셋이 계산되면 두 가지 방법이 있습니다.
- 간단히 전달하여 노드를 이동합니다
xshift = -offset
. 이는 향후 위치 지정을 위한 앵커에 영향을 미칩니다. - 네거티브 접착제를 추가하십시오. 이는 재정의하여 수행할 수 있습니다
\tikz@text@action
. 실제로 이 명령은 사용자가text ragged left
텍스트 정렬 스타일을 전달하면 재정의됩니다.
이제 수행한 모든 작업을 스타일 키로 래핑합니다. 서로 다른 초기 문자에 대해 서로 다른 오프셋을 원하는 경우 인수를 사용하여 스타일을 정의할 수 있습니다.
다음 예에서는 오프셋으로 A
및 사이의 커닝을 두 번 사용했습니다. V
나는 이것이 옳다고 말하는 것이 아닙니다. 그러나 \XeTeXglyphbounds
올바른 결과를 제공하지 못할 수도 있습니다. 그 이유는 우리가 필요한 이유와 동일합니다.넘겨 쏘다).
\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}