Я пытаюсь включить изображение на титульный лист части моего отчета, чтобы оно выглядело так, но правильно отображалось в оглавлении:
\clearpage
\newpage
{\pagestyle{empty} \enlargethispage{10\baselineskip}
{\huge\textbf{Part I: Lorem Ipsum}}\\
\noindent\rule{\textwidth}{0.4pt}
\begin{center}
\includegraphics[width=\textwidth]{figures/part_1_title.pdf}
\end{center}
\clearpage}
\newpage
Похожий вопрос был заданздесь, но у меня \printparttitle
выдает ошибку.
Кто-нибудь знает, как это сделать?
Еще один похожий вопрос был задан на другом форуме:здесь.
Я попытался изменить определение \part
из report.cls
файла, чтобы название детали выглядело по-другому, но это не сработало. (Мне нужно место для картинки).
На что это похоже:
Часть I
Lorem Ipsum
Как я хочу, чтобы это выглядело
Часть I: Lorem Ipsum
который получается с помощью этого кода:
{\pagestyle{empty} \enlargethispage{10\baselineskip}
{\huge\textbf{Part I: Lorem ipsum}}\\
\noindent\rule{\textwidth}{0.4pt}
\begin{center}
\includegraphics[width=\textwidth]{figures/PartI_Loerm.pdf}
\end{center}
Есть у кого-нибудь идеи?
решение1
Добавьте набор изображений в команду \@endpart
:
\makeatletter
\newcommand{\imagepart}[1]{\def\@theimagepart{#1}\part}
\def\@endpart{%
\par\medskip
\hrule
\begin{center}
\includegraphics[width=\textwidth]{\@theimagepart}
\end{center}
\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\makeatother
Полный пример ( demo
опция приведена только для примера)
\documentclass{report}
\usepackage[demo]{graphicx}
\makeatletter
\newcommand{\imagepart}[1]{\def\@theimagepart{#1}\part}
\def\@endpart{%
\par\medskip
\hrule
\begin{center}
\includegraphics[width=\textwidth]{\@theimagepart}
\end{center}
\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\makeatother
\begin{document}
\imagepart{figures/part_1_title.pdf}{Part title}
\end{document}
Возможно также переопределение \@part
, с некоторыми незначительными изменениями в \@endpart
, чтобы не было переносов строк в заголовке.
\documentclass{report}
\usepackage[demo]{graphicx}
\makeatletter
\newcommand{\imagepart}[1]{\def\@theimagepart{#1}\part}
\def\@endpart{%
\par\vskip12pt\hrule\vskip12pt
{\centering
\includegraphics[width=\textwidth]{\@theimagepart}\par}
\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart:
\fi
#2\par}
\@endpart}
\makeatother
\begin{document}
\imagepart{figures/part_1_title.pdf}{Part title}
\end{document}
Если вы хотите переместить заголовок части вверх, вам необходимо изменить \vfil
в определении \part
; например, добавив
\renewcommand\part{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\thispagestyle{plain}%
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
\null\vspace{\stretch{1}}
\secdef\@part\@spart}
и изменив \vfil
в переопределении \@endpart
на \vspace{\stretch{2}}
у вас будет в два раза больше места внизу, чем вверху.
Окончательный вариант
Слева на картинке результат \imagepart
, справа ваше желание.
\documentclass{report}
\usepackage[demo]{graphicx}
\makeatletter
\newcommand{\imagepart}[1]{\def\@theimagepart{#1}\part}
\def\@endpart{%
\par\vskip12pt\hrule\vskip12pt
{\centering
\includegraphics[width=\textwidth]{\@theimagepart}\par}
\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\renewcommand\part{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\thispagestyle{empty}%
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
\null\vspace{-2\baselineskip}
\secdef\@part\@spart}
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\raggedright
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart:
\fi
#2\par}
\@endpart}
\makeatother
\begin{document}
\imagepart{figures/part_1_title.pdf}{Part title}
\clearpage
\newpage
{\pagestyle{empty} \enlargethispage{10\baselineskip}
{\huge\textbf{Part I: Lorem Ipsum}}\\
\noindent\rule{\textwidth}{0.4pt}
\begin{center}
\includegraphics[width=\textwidth]{figures/part_1_title.pdf}
\end{center}
\clearpage}
\newpage
\end{document}
Дополнение 2022
Как добавить текст описания под изображением? Вот возможность.
\documentclass{report}
\usepackage{graphicx}
\makeatletter
\newcommand{\imagepart}[2]{%
\def\@theimagepart{#1}%
\def\@thecaptionpart{#2}%
\part
}
\def\@endpart{%
\par\medskip
\hrule
\begin{center}
\includegraphics[width=\textwidth]{\@theimagepart} \\
\@thecaptionpart
\end{center}
\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\makeatother
\begin{document}
\imagepart{example-image}{Description}{Part title}
\end{document}
Примените желаемое форматирование к вызову \@thecptionpart
.
решение2
Если вы используете класс KOMA, вы можете сделать это с помощью \setpartpreamble
. Команда имеет два необязательных аргумента для указания положения и ширины.
\documentclass{scrreprt}
\usepackage{mwe}
\begin{document}
\setpartpreamble{%
\begin{center}
Here some text and a picture
\includegraphics[width=.48\linewidth]{example-image-a}
\end{center}
}
\part{foo}
\end{document}