构建章节标题

构建章节标题

我正在尝试在章节标题周围添加一个框架。我正在使用包mdframed这增加了功能framed包。它基本上在环境中围绕对象绘制一个框。所以我想知道我该怎么做。\renewcommand例如,我可以使用吗?我真的很想使用它mdframed来创建框架。

答案1

titlesec软件包内置了此功能。以下是示例:

\documentclass{article}
\usepackage{titlesec}
\titleformat{\section}[frame]
{\normalfont} {} {5pt} {\Large\bfseries\filcenter\thesection.\quad}
\begin{document}
\section{A section}
\end{document}

在此处输入图片描述

如果这不是您想要的,您可能应该结合使用该包mdframed来修改您的章节,因为它提供了一个简单但功能强大的系统来修改所有章节标题。

答案2

通过重新定义整体,可以非常实际地修改分段表示\section。Vincent Zoonekynd 的LaTeX 网站部分内容确实如此,并提供了 37 种不同的部分定义,包括标题框架。并不总是像使用包那样漂亮/干净(如其他答案中所述),但它确实让用户可以控制排版的每个细节。

以下是 MWE 形式的示例 31,经过修改以使用lipsum

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\makeatletter
\def\section{\@ifstar\unnumberedsection\numberedsection}
\def\numberedsection{\@ifnextchar[%]
  \numberedsectionwithtwoarguments\numberedsectionwithoneargument}
\def\unnumberedsection{\@ifnextchar[%]
  \unnumberedsectionwithtwoarguments\unnumberedsectionwithoneargument}
\def\numberedsectionwithoneargument#1{\numberedsectionwithtwoarguments[#1]{#1}}
\def\unnumberedsectionwithoneargument#1{\unnumberedsectionwithtwoarguments[#1]{#1}}
\def\numberedsectionwithtwoarguments[#1]#2{%
  \ifhmode\par\fi
  \removelastskip
  \vskip 3ex\goodbreak
  \refstepcounter{section}%
  \hbox to \hsize{%
    \fbox{%
      \hbox to 1cm{\hss\bfseries\Large\thesection.\ }%
      \vtop{%
        \advance \hsize by -1cm
        \advance \hsize by -2\fboxrule
        \advance \hsize by -2\fboxsep
        \parindent=0pt
        \leavevmode\raggedright\bfseries\Large
        #2
        }%
      }}\nobreak
  \vskip 2mm\nobreak
  \addcontentsline{toc}{section}{%
    \protect\numberline{\thesection}%
    #1}%
  \ignorespaces
  }
\def\unnumberedsectionwithtwoarguments[#1]#2{%
  \ifhmode\par\fi
  \removelastskip
  \vskip 3ex\goodbreak
%  \refstepcounter{section}%
  \hbox to \hsize{%
    \fbox{%
%      \hbox to 1cm{\hss\bfseries\Large\thesection.\ }%
      \vtop{%
%        \advance \hsize by -1cm
        \advance \hsize by -2\fboxrule
        \advance \hsize by -2\fboxsep
        \parindent=0pt
        \leavevmode\raggedright\bfseries\Large
        #2
        }%
      }}\nobreak
  \vskip 2mm\nobreak
  \addcontentsline{toc}{section}{%
%    \protect\numberline{\thesection}%
    #1}%
  \ignorespaces
  }
\makeatother
\pagestyle{empty}
\begin{document}
\section*{Introduction}
\lipsum[1]
\section{Suite}
\lipsum[2]
\section{Suite}
\lipsum[3]
\section{Fin}
\lipsum[4]
%\tableofcontents
\end{document}

在此处输入图片描述

答案3

如果你还需要版本\Section*,那么定义必须扩展

\documentclass{article}
\usepackage{mdframed}
\makeatletter
\newcommand\Section[2][]{\begin{mdframed}[linewidth=5pt]%
  \ifx\relax#1\relax\section{#2}\else\section[#1]{#2}\fi
  \end{mdframed}}

\makeatother
\begin{document}
\Section{A section}
\end{document}

在此处输入图片描述

相关内容