tikz 文本节点中奇怪的垂直空间

tikz 文本节点中奇怪的垂直空间

我正在使用“Legrand Orange book”模板中的章节装饰。但我得到了非常奇怪的垂直间距。见图片。因为大写字母H第三行和第四行之间的间距比以前没有“线上”字母的间距大得多。

所以,这种小的垂直间距对我来说很奇怪……我错了吗?我想将垂直间距改为正常(大写字母有间隙)

在此处输入图片描述

这是最小的工作示例。

\documentclass{book} 

\usepackage{geometry}
\usepackage[russian]{babel}
\usepackage{tikz} 
\usepackage{xcolor} 
\definecolor{prpl}{RGB}{150, 120, 182} 
\usepackage[utf8]{inputenc} 
\usepackage[T2A]{fontenc} 

\makeatletter
\def\@makechapterhead#1{%
{\begin{tikzpicture}[remember picture,overlay]
\node at (current page.north west)
{\begin{tikzpicture}[remember picture,overlay]
\draw[anchor=west] (\Gm@lmargin,-5cm) node [line width=2pt,rounded corners=15pt,draw=prpl,fill=white,fill opacity=0.5,inner sep=45pt]{\makebox[22cm]{}};
\draw[anchor=west] (\Gm@lmargin+.3cm,-5cm) node[text width=16cm] {\huge\sffamily\bfseries\color{black}\thechapter. #1};
\end{tikzpicture}};
\end{tikzpicture}
}}
\makeatother

\begin{document}
\chapter{Исследование функций одной переменной при помощи первой и второй производных на монотонность, локальные экстремумы, выпуклость. Необходимые условия, достаточные условия.}
\end{document}

答案1

我不确定它应该是什么样子。这是一种获取“正确”行距的方法,即 的正确行距\huge。如果您想要不同的东西,您可以使用\fontsize{<dimen>}{<dimen>}\selectfont代替\huge,其中第一个数字给出字体的磅值,第二个数字给出基线跳过,例如{12pt}{14pt}

我删除了嵌套的tikzpictures ,因为不支持它,而且已知它会导致问题。嵌套的 更是如此remember picture, overlay,它根本没有意义。

您可能会发现tikzpagenodes避免使用内部geometry尺寸很有用。

\documentclass[russian]{book} 
\usepackage[showframe]{geometry}
\usepackage{babel}
\usepackage{tikz} 
\definecolor{prpl}{RGB}{150, 120, 182} 
\usepackage[utf8]{inputenc} 
\usepackage[T2A]{fontenc} 
\usepackage{kantlipsum}

\makeatletter
\def\@makechapterhead#1{%
  \noindent
  \begin{tikzpicture}[remember picture]
    \node (n) at (\Gm@lmargin,-\Gm@tmargin) [ inner sep=3mm, fill=white, fill opacity=0.5, text width={\textwidth-6mm}, text opacity=1, font=\huge\sffamily\bfseries, text=black]{\thechapter. #1};
  \end{tikzpicture}%
  \begin{tikzpicture}[remember picture,overlay]
    \draw [line width=2pt, rounded corners=15pt, prpl] (n.north -| current page.east) -| (n.south west) -- (n.south -| current page.east); 
  \end{tikzpicture}%
  \bigskip\par
}
\makeatother

\begin{document}
\chapter{Исследование функций одной переменной при помощи первой и второй производных на монотонность, локальные экстремумы, выпуклость. Необходимые условия, достаточные условия.}
\kant[1-3]
\end{document}

输出

这些线条仅用于showframe说明和调试。显然,当您对布局感到满意时,您应该删除此选项。

例如,\huge表示 20pt 字体,跳过 25pt。\fontsize{20pt}{22pt}\selectfont在代码中替换可\huge关闭以下行:

更柔和的输出

答案2

这是我的尝试——它有效但似乎有点不靠谱。问题在于如何正确定位章节标题后面的文本。请参阅代码中的注释。我希望看到一个不那么不靠谱的解决方案!

\documentclass{book} 

\usepackage[showframe]{geometry}
\usepackage[russian]{babel}
\usepackage{tikz} 
\usepackage{xcolor} 
\definecolor{prpl}{RGB}{150, 120, 182} 
\usepackage[utf8]{inputenc} 
\usepackage[T2A]{fontenc}
\usepackage{tikzpagenodes}

\newsavebox{\tmpbox}
\newlength{\tmpht}

%% Put the text of the chapter head into an lrbox.
%% Use the lrbox in \@makechapterhead;
%% measure the lrbox to arrive at a \vspace that
%% gets the text of the chapter out the way of
%% the chapter head.

\makeatletter
\def\@makechapterhead#1{%
\begin{lrbox}{\tmpbox}%
    \begin{minipage}{\textwidth}%
        \raggedright\huge\sffamily\bfseries\color{black}\thechapter. #1
    \end{minipage}%
\end{lrbox}%
\noindent
\begin{tikzpicture}[remember picture,overlay]%% The chapter head occupies no space on the page
    \node[anchor=north west,
    rounded corners=15pt,
    draw=prpl!50,
    line width=2pt,
    inner sep=6pt] at (current page text area.north west)
        {\usebox{\tmpbox}\hspace*{22cm}}; %% change '22cm' to suit
\end{tikzpicture}%
\settoheight{\tmpht}{\usebox{\tmpbox}}%
\vspace{\dimexpr\tmpht + 1in}% Adjust 1in to suit
}
\makeatother

\begin{document}
\chapter{Исследование функций одной переменной при помощи первой и второй производных на монотонность, локальные экстремумы, выпуклость. Необходимые условия, достаточные условия.}

\section{This is a section}

More text.

\end{document}

--

在此处输入图片描述

相关内容