我想用 tikz 创建一个标题页,因此我在标题内有一个节点,在换行符后有一个副标题。 问题现在,缩进出现了问题,如下图所示。两个文本应该从同一位置开始。
可编译代码示例:
\documentclass[a5paper,11pt,twocolumn,parskip=half,parindent=none]{scrbook}
\usepackage[ngerman,german]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{lmodern}
\selectlanguage{german}
\usepackage{tikz}
\usepackage{color}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{helvet}
\definecolor{fsblue}{rgb}{0.17,0.24,0.31}
\definecolor{fsorange}{rgb}{1,0.44,0.0}
\renewcommand{\familydefault}{\sfdefault}
\geometry{top=25mm, left=15mm, right=12mm, bottom=20mm}
\begin{document}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.south west)}]
\node [
fill=fsorange,
inner xsep=1em,
minimum height=1cm,
text width={\paperheight},
anchor=north west,
rotate=90
] at (current page.south west) {Text Text};
\node [
fill=fsblue,
inner xsep=1.5cm,
minimum height=3cm,
text width={\paperwidth-1cm},
anchor=south west
] at (1cm,13cm) {\color{white}\bfseries\Huge B Text one\\\normalsize B Text two};
\end{tikzpicture}
\end{document}
答案1
这就是为什么这个问题没有通用的解决方案:
\documentclass{article}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\fbox{\Huge B}
\fbox{B}
\end{document}
这些框完美对齐。你正在尝试对齐它们的内容。但是,对于 TeX,一切是一个盒子。具体来说,aB
只是一个具有特定尺寸的盒子。它不能考虑什么是里面盒子。它不关心盒子里面是什么。它只关心盒子的尺寸。
要对齐“B”,您必须补偿框内“B”左侧空间的差异。这取决于多种因素:字体、大小、字符。没有通用的方法来做到这一点。如果您希望这种情况看起来正确,您需要针对这种情况进行调整。
以下是使用相同字体的“X”的结果:
如果您针对“B”进行了调整,那么您将需要对“X”进行完全不同的调整 - 甚至可能根本不需要进行调整。
所以也许您可以选择以“X”开头的标题......?
编辑
除了手动指定包含两个文本的节点的适当坐标外,您还可以通过以下方式将节点向左移动一点:
\node (a) {text 1};
\node (b) [anchor=north east] at ([xshift=-.5em]a.south east) {text 2};
或者
\node (b) [anchor=north east, xshift=-.5em] at (a.south east) {text 2};
或使用positioning library
\node (b) [anchor=north east, below left=0pt and .5em of a.south east] {text 2};
或类似的东西。
谢谢Sean Allred 的评论建议这个问题其重点是如何将节点‘推动’到位。
答案2
对于我的解决方案我添加了一个具有固定位置的附加节点。它仅适用于\normalsize\bfseries
文本。代码如下:
\begin{tikzpicture}[remember picture,overlay,shift={(current page.south west)}]
\node [
fill=fsorange,
inner xsep=1em,
minimum height=1cm,
text width={\paperheight},
anchor=north west,
rotate=90
] at (current page.south west) {\color{white}\bfseries\@date};
\node [
fill=fsblue,
inner xsep=1.5cm,
minimum height=3cm,
font=\color{white}\bfseries\Huge,
text width={\paperwidth-1cm},
anchor=south west
] at (1cm,13cm) {\@titlehead};
\node [
font=\color{white}\bfseries\normalsize,
text width={\paperwidth-1cm},
anchor=south west
] at (2.415cm,13.6cm) {\@subject};
\end{tikzpicture}