
Я хочу создать новый тип заголовка. Заголовок должен выглядеть так.
Имя заголовка должно быть "Myheader". Сейчас я решил проблему следующим образом:
\makeatletter
\newcommand{\Myheader}{\subsubsection}
\makeatother
\titlespacing*{\subsubsection}{0cm}{0cm}{2pt}%pbk
\titleformat{\subsubsection}[display]{\Huge\filleft\scshape}{ \normalfont\bf\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thesection}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}]
Я все еще хочу иметь возможность использовать заголовок \subsubsection
, поэтому решение неприемлемо. Минимальный пример кода:
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[danish,english]{babel}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\makeatletter
\newcommand{\Myheader}{\subsubsection}
\makeatother
\titlespacing*{\subsubsection}{0cm}{0cm}{2pt}%pbk
\titleformat{\subsubsection}[display]{\Huge\filleft\scshape}{ \normalfont\bf\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thesection}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}]
\begin{document}
\Myheader{The first appendix}
\end{document}
Есть идеи, как это решить?
решение1
Вы можете пропатчить команду, выданную для начала приложений, так что она \section
будет выдавать правильные результаты после этой точки, т. е. только для приложений. Это гарантирует, что ваши приложения будут размещены на правильном уровне в иерархии разделов (например, для ToC или для закладок) и сделает ваш код максимально гибким (например, если вы передумаете, просто удалите патч).
Например:
\documentclass[10pt,a4paper,oneside]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{titlesec,etoolbox}
\usepackage{kantlipsum}
\apptocmd\appendix{%
\titlespacing*{\section}{0cm}{0cm}{2pt}%pbk
\titleformat{\section}[display]{\Huge\filleft\scshape}{ \normalfont\bfseries\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thesection}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}]
}{\typeout{Appendices title formatting successfully patched. Expect the expected.}}{\typeout{Appendices title formatting could not be patched. Unexpected results paradoxically to be expected.}}
\begin{document}
\section{A section}
\kant[1]
\section{Another section}
\kant[2]
\appendix
\section{The first appendix}
\kant[3]
\end{document}
РЕДАКТИРОВАТЬ
В комментариях вы спрашивали, как изменить это, чтобы получить пустые заголовки на страницах с \section
after \appendix
is выдан. Ваш комментарий заставляет меня предположить, что вы используете fancyhdr
. Не зная кода, который вы в настоящее время используете для заголовков в других местах, трудно указать лучший способ сделать это, но если у вас есть что-то достаточно стандартное, это должно сработать.
\documentclass[10pt,a4paper,oneside]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{titlesec,etoolbox,fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhf[lh]{\leftmark}
\fancyhf[rh]{\thepage}
\fancypagestyle{ancy}{%
\fancyhf[h]{}%
\renewcommand\headrulewidth{0pt}%
}
\usepackage{kantlipsum}
\apptocmd\appendix{%
\titlespacing*{\section}{0cm}{0cm}{2pt}%pbk
\titleformat{\section}[display]{\Huge\filleft\scshape}{ \normalfont\bfseries\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thesection}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}\thispagestyle{ancy}]
}{\typeout{Appendices title formatting successfully patched. Expect the expected.}}{\typeout{Appendices title formatting could not be patched. Unexpected results paradoxically to be expected.}}
\begin{document}
\section{A section}
\kant[1-4]
\section{Another section}
\kant[5]
\appendix
\section{The first appendix}
\kant[6-8]
\end{document}
Обратите внимание, что это буквальная интерпретация вашего описания и может быть, а может и не быть тем, что вы хотите. В частности:
\section
следующий\appendix
очищает заголовок на текущей странице, даже если страница также содержит\section
предшествующий\appendix
;- Следующие страницы
\appendix
включают стандартный заголовок, если они не включают\section
.
\appendix
Если вам вообще не нужны заголовки после . Вы можете использовать:
\apptocmd\appendix{%
\pagestyle{ancy}%
\titlespacing*{\section}{0cm}{0cm}{2pt}%pbk
\titleformat{\section}[display]{\Huge\filleft\scshape}{ \normalfont\bfseries\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thesection}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}\thispagestyle{ancy}]
}{\typeout{Appendices title formatting successfully patched. Expect the expected.}}{\typeout{Appendices title formatting could not be patched. Unexpected results paradoxically to be expected.}}
Другие возможности здесь более сложны, поэтому я буду думать о них только в случае необходимости. В этом случае я буду работать с вашим текущим кодом для заголовков, потому что, вероятно, будет проще всего отойти от него fancyhdr
в тот момент. titleps
дополняет titlesec
и будет хорошо работать здесь.
ИЗМЕНИТЬ ИЗМЕНИТЬ
В ответ на ваш вопрос о патчинге \tableofcontents
подобным образом, вы, конечно, можете это сделать. Однако, признаю, что я немного запутался в том, как именно все должно выглядеть, и я не смог точно понять цель кода, который вы разместили. (Но явные разрывы страниц и нумерация страниц не должны быть в определении стиля страницы.)
Я сделал это:
\pretocmd\tableofcontents{%
\titlespacing*{\section}{0cm}{0cm}{2pt}%pbk
\titleformat{\section}[display]{\Huge\filleft\scshape}{ \normalfont\bfseries\fontfamily{put}\fontseries{b}\fontsize{95pt}{0pt}\selectfont\thesection}{20pt}{}[\titlerule\vspace{2ex}\filright\vspace{2ex}\thispagestyle{ancy}]
}{\typeout{Contents title formatting successfully patched. Expect the expected.}}{\typeout{Contents title formatting could not be patched. Unexpected results paradoxically to be expected.}}
\apptocmd\tableofcontents{%
\titlespacing*{\section}{0pt}{*5}{*2.5}%
\titleformat{\section}[hang]{\normalfont\Large\bfseries}{\thesection}{1.5em}{}[\thispagestyle{fancy}]
}{\typeout{Contents title formatting successfully patched again. Expect the expected.}}{\typeout{Contents title formatting could not be patched again. Unexpected results paradoxically to be expected.}}
что дает мне это
Но я подозреваю, что вы на самом деле просто используете не тот класс. Если бы вы использовали book
или , report
то многое из этого было бы там для вас в любом случае. book
Например, с , вы получаете \frontmatter
, \mainmatter and
\backmatter which are starting to look suspiciously like code you are trying to create here. If so, don't reinvent the wheel - use the right tool for the job and choose
book or a
book`-like класс.