是否可以将章节标题和大章节编号并排垂直居中?

是否可以将章节标题和大章节编号并排垂直居中?

这在 ConTeXt 中很容易实现... :(

我已经尝试这种布局一段时间了,但似乎没有什么能像我预期的那样发挥作用。

我有一个自定义章节标题,用 创建titlesec。我想让章节标题文本和一个很大的章节编号垂直居中,即使章节标题很短,只占一行。

目前,它们与基线对齐,这是意料之中的。但我找不到“强制”垂直对齐的方法……我不知道是否应该尝试一下tikz,也许吧。

整个组(标题 + 数字)向右对齐,并由具有某些特征的线分隔(与数字相同的高度、一定的宽度和颜色)。我尝试过 tabular、tabu、parbox……可能很容易,但我找不到可行的解决方案。我不知道我的一些代码是否搞砸了,所以我至少包含了字体(Erewhon)和任意大小定义,以及我创建的一些宏,也许有些错误我没有看到。

任何帮助将不胜感激。

这是我的 MWE:

\documentclass{book}
\usepackage[clearempty,newlinetospace,raggedright,small,explicit]{titlesec}
\usepackage{pbox}
\usepackage{lipsum}
\usepackage{erewhon}
\usepackage{microtype}
\usepackage[usenames,dvipsnames]{xcolor}

\definecolor{gris50}{gray}{0.5}


\newcommand{\size}[2]{{\fontsize{#1}{0}\selectfont #2}}
\newcommand{\sizeline}[3]{{\fontsize{#1}{#2}\selectfont #3}}
\newenvironment{sizepar}[2]
 {\par\fontsize{#1}{#2}\selectfont}
 {\par}
\newcommand{\bigvertical}[1][black]{\kern12pt\textcolor{#1}{\rule[0pt]{1pt}{\fontcharht\font`M}}\kern10pt}

\titleformat{\chapter}[block]{\bfseries}{}{0pt}{%
  \filleft% 
  \pbox[b][][b]{.6\textwidth}{%
    \raggedleft%
    \sizeline{14}{16}{\textls[30]{#1}}%
  }%
  \sizeline{40}{40}{\bigvertical[gris50]\textcolor{gris50}{\thechapter}}%
}

\titleformat{\section}[block]{\bfseries}{}{0pt}{\textls[20]{\sizeline{11.2}{13}{#1}}}
\titleformat{\subsection}[block]{\bfseries\slshape}{}{0pt}{\textls[20]{\sizeline{10.2}{13}{#1}}}

\titlespacing*{\chapter}{0pt}{0pt}{122pt}

\begin{document}

\chapter{A really long chapter title with several words}

\lipsum[1-3]

\chapter{A short title}

\lipsum[1-3]

\end{document}

标题对齐程度较好

标题与底部对齐

答案1

tabular您可以使用和获得垂直居中\parbox。此外,\vrule自行计算所需的高度和深度。

\documentclass{book}
\usepackage[clearempty,newlinetospace,raggedright,small,explicit]{titlesec}
\usepackage{pbox}
\usepackage{lipsum}
\usepackage{erewhon}
\usepackage{microtype}
\usepackage[usenames,dvipsnames]{xcolor}

\definecolor{gris50}{gray}{0.5}

\newcommand{\size}[2]{{\fontsize{#1}{0}\selectfont #2}}
\newcommand{\sizeline}[3]{{\fontsize{#1}{#2}\selectfont #3}}
\newenvironment{sizepar}[2]
 {\par\fontsize{#1}{#2}\selectfont}
 {\par}

\newcommand{\printchapternumber}{%
  \begingroup\renewcommand{\arraystretch}{0}%
  \begin{tabular}{@{}c@{}}\size{40}{\thechapter}\end{tabular}%
  \endgroup
}

\titleformat{\chapter}[block]
  {\bfseries\filleft}
  {}
  {0pt}
  {%
   \parbox{.6\textwidth}{\raggedleft\fontsize{14}{16}\selectfont#1}%
   \hspace{6pt}%
   \color{gris50}\vrule
   \hspace{6pt}%
   \printchapternumber
  }

\titleformat{\section}[block]{\bfseries}{}{0pt}{\textls[20]{\sizeline{11.2}{13}{#1}}}
\titleformat{\subsection}[block]{\bfseries\slshape}{}{0pt}{\textls[20]{\sizeline{10.2}{13}{#1}}}

\titlespacing*{\chapter}{0pt}{0pt}{122pt}

\begin{document}

\begingroup\let\clearpage\relax\let\cleardoublepage\relax

\chapter{A really long chapter title with several words}

\chapter{A short title}

\chapter{A really long long long long long chapter title with several several several words}

\endgroup

\end{document}

我重新定义了文档主体中的\clearpage和,\cleardoublepage只是为了将标题放在同一页面上,以便于轻松比较它们。

在此处输入图片描述

最后说明:我删除了\textls谁要是把字母空格小写,那他也会偷羊。

相关内容