标题间距大小的计算

标题间距大小的计算

请考虑以下示例:

\documentclass[11pt,a4paper]{book}
\usepackage{lipsum}
\usepackage{titlesec}

\newlength{\textsize}
\makeatletter
\setlength{\textsize}{\f@size pt}
\makeatother

\titlespacing*{\section} {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex} % WORK
\titlespacing*{\section} {0pt}{\dimexpr(3.5ex-1.\textsize)\relax plus 1ex minus .2ex}{2.3ex plus .2ex} % FAIL

\begin{document}
\section{Section}
\lipsum
\end{document}

错误如下: 在此处输入图片描述

如何使失败的表达式起作用以便减少文本大小的空间?

答案1

\titlespacing命令使用一些技巧来提取plusminus维度并进行一些计算;\relax标记会干扰处理,因为\relax它被用作内部宏之一中参数的终止符。

\documentclass[11pt,a4paper]{book}
\usepackage{lipsum}
\usepackage{titlesec}

\newlength{\textsize}
\makeatletter
\setlength{\textsize}{\f@size pt}
\makeatother

\titlespacing*{\section}
  {0pt}
  {\glueexpr (3.5ex-\textsize) + 0pt plus 1ex minus .2ex}
  {2.3ex plus .2ex}

\begin{document}
\section{Section}
\lipsum
\end{document}

或者,使用

\the\dimexpr 3.5ex-\textsize\relax  plus 1ex minus .2ex

这将\relax在评估时删除不需要的部分\dimexpr

相关内容