我想使用 titlesec 包中的 \titleformat 中的 pgfornament 包来制作一个漂亮的章节标题。
当我在左侧仅使用一个装饰物时,它就起作用了。
\documentclass[11pt]{book}
\usepackage[utf8]{inputenc}
\usepackage{titlesec}
\usepackage{pgfornament}
\begin{document}
\titleformat{\section}[block]{\parbox[c]{5em}{\pgfornament[width=4em]{17}}\begin{minipage}{0.7\textwidth}\normalfont\Large\bfseries}{\thesection}{1em}{}[\end{minipage}]
\chapter{Story}
\section*{Introduction}
\end{document}
但当我想要两侧的装饰时,它不起作用。
\titleformat{\section}[block]{\parbox[c]{5em}{\pgfornament[width=4em]{17}}\begin{minipage}{0.7\textwidth}\normalfont\Large\bfseries}{\thesection}{1em}{}[\end{minipage}\parbox[c]{5em}{\pgfornament[width=4em]{18}}]
我从 pdflatex 收到以下错误消息:
Chapter 1.
(/usr/share/texlive/texmf-dist/tex/generic/vectorian17.pgf)
Runaway argument?
c\@@par \ttl@endlongest \fi \endgroup \ttl@finmarks \@ifundefined {tt\ETC.
! Paragraph ended before \@iparbox was complete.
<to be read again>
\par
l.13 \section*{Introduction}
任何帮助都将不胜感激。提前谢谢您。
答案1
\parbox
由于和 的可选参数,您需要将最后一个可选参数的全部内容括在一对额外的括号中\pgfornament
:
\documentclass[11pt]{book}
\usepackage[utf8]{inputenc}
\usepackage{titlesec}
\usepackage{pgfornament}
\begin{document}
\titleformat{\section}[block]
{\parbox[c]{5em}{\pgfornament[width=4em]{17}}\begin{minipage}{0.7\textwidth}\normalfont\Large\bfseries}
{\thesection}{1em}{}
[{\end{minipage}\parbox[c]{5em}{\pgfornament[width=4em]{18}}}]
\chapter{Story}
\section*{Introduction}
\end{document}
为了防止过满\hbox
,请更改的宽度minipage
;也许您还希望右侧的装饰物也能被刷新:
\titleformat{\section}[block]{\parbox[c]{5em}{\pgfornament[width=4em]{17}}\begin{minipage}{\dimexpr\textwidth-10em\relax}\normalfont\Large\bfseries}{\thesection}{1em}{}
[{\end{minipage}\parbox[c]{5em}{\hfill\pgfornament[width=4em]{18}}}]