章节标题中有多行

章节标题中有多行

我正在使用这个模板: http://www.fluortools.com/misc/LaTeXtemplate

我已经在格式AndDefs.tex文件

\usepackage{tikz}
\usetikzlibrary{calc,decorations,decorations.pathmorphing,arrows,matrix,positioning,patterns}

\titlespacing*{\chapter}{0cm}{-1.cm}{-40pt}%pbk
\titleformat{\chapter}[display]{\Huge\filleft\scshape}{ \normalfont\bf\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thechapter}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}]
%
\titlespacing*{\part}{-10pt}{120pt}{-80pt}%pbk
\titleformat{\part}[frame]{\Huge\filcenter\scshape}{ \normalfont\bf\fontsize{85pt}{0pt}\selectfont \raisebox{1.7cm}{ Part\fontfamily{put}\fontseries{b}\fontsize{105pt}{0pt}\selectfont \hspace{.2em}\thepart} }{30pt}{}[\filright]

 \newcommand\boxedSection[3]{{%
%
     \begin{tikzpicture}[inner sep=#3,line width=1.0pt]
         \node[] at (0,0) (counter) {\textbf{#2}};
            %  \draw (counter.south west)  ++(.0pt,.1pt)-- ++($(\linewidth,0) - (0.5pt,0)$);
\node [right of=counter,anchor=west]{\textbf{#1}};
     \end{tikzpicture}
 }}
 \newcommand\boxedSectionB[3]{{%
%
     \begin{tikzpicture}[inner sep=#3,line width=1pt]
         \node[anchor=east,rectangle,draw,fill=black] at (0,0) (counter) {\color{white}\textbf{#2}};
             \draw (counter.south west) ++(.0pt,.5pt)-- ++($(\linewidth,0) - (2.5pt,0)$);
\node [right of=counter,anchor=west]{#1};
     \end{tikzpicture}
 }}
\newcommand\boxedsection[1]{\boxedSectionB{#1}{\thesection}{2mm}}
\newcommand\boxedsubsection[1]{\boxedSection{#1}{\thesubsection}{1.7mm}}
\newcommand\boxedsubsubsection[1]{\boxedSection{#1}{\thesubsubsection}{1.6mm}}
 \titleformat{\section}[hang]%
     {\usekomafont{section}}%
     {}%
     {.0em}%
     {\filright\boxedsection}%

 \titleformat{\subsection}[hang]%
     {\usekomafont{subsection}}%
     {}%
     {.0em}%
     {\filright\boxedsubsection}%
 \titleformat{\subsubsection}[hang]%
     {\usekomafont{subsubsection}}%
     {}%
     {.0em}%
     {\filright\boxedsubsubsection}%

如果我的版块标题较短,则一切正常。但是,当我的标题较长时,我得到以下信息(附图):

\section{This is a very very very very long title for this section}

在此处输入图片描述

我怎样才能允许章节标题有多行?

答案1

问题在于,这个特定的模板直接在 TikZ 节点内排版章节和小节标题,而 TikZ 节点一般不支持换行。

这种处理章节标题的方式非常不寻常,而且并不是一个好主意。开发这个模板的人应该重新考虑一下设计。

作为临时解决方案,您可以更改 的定义以\boxedSectionB插入\parbox文本而不是原样插入文本。我建议的代码如下。但是,我使用了一些技巧来\smash防止\vphantom节点偏离基线,我只是通过反复试验得出了 parbox 的 10cm 宽度,因为我不知道有什么好方法来计算节点起始位置剩余的确切宽度。

您可能需要摆弄 10cm,特别是当您要使用多于个位数的章节编号时。

此外,如果章节标题长度超过两行,你仍然会很倒霉,因为 TikZ 图片不够大。

 \newcommand\boxedSectionB[3]{{%
%
     \begin{tikzpicture}[inner sep=#3,line width=1pt]
         \node[anchor=east,rectangle,draw,fill=black] at (0,0) (counter) {\color{white}\textbf{#2}};
             \draw (counter.south west) ++(.0pt,.5pt)-- ++($(\linewidth,0) - (2.5pt,0)$);
         \node [right of=counter,anchor=west]{\vphantom{X}\smash{\parbox[b]{10cm}{#1}}};
     \end{tikzpicture}
 }}

tikz 标题输出

\boxedSection如果您有较长的子部分标题,您可能需要以类似的方式编辑其上方的(无 B)的定义,但我会让您解决细节问题。

实际上,这只是模板制作者的设计不佳,站在你的角度,我要么使用不同的模板(如果允许的话),要么要求他们提出更好的解决方案(如果你有能力的话)。

相关内容