
Edição 1: A imagem deve ser "Três linhas em vez de quatro".
Edição 2: Código compilável atualizado.
Sou novo no Latex e tenho o seguinte código de modelo que fornece um título para minha tese:
\documentclass[headsepline,footsepline,footinclude=false,oneside,fontsize=11pt,paper=a4,listof=totoc,bibliography=totoc]{scrbook} % one-sided
\usepackage{graphicx}
\usepackage[ngerman,american]{babel}
\newcommand*{\getUniversity}{University of Earth}
\newcommand*{\getFaculty}{Engineering Department}
\newcommand*{\getDegree}{Computer Science}
\newcommand*{\getSchool}{School of Public Science}
\newcommand*{\getTitle}{This is a Long title that I want to stretch the Margin so that instead of 4 lines, it should only be 3 lines, and the logo at the end won't break}
\newcommand*{\getTitleGer}{This is a Long title that I want to stretch the Margin so that instead of 4 lines, it should only be 3 lines, and the logo at the end won't break}
\newcommand*{\getAuthor}{Author}
\newcommand*{\getDoctype}{Thesis}
\newcommand*{\getSupervisor}{Faculty Professor}
\newcommand*{\getAdvisor}{Faculty Advisr}
\newcommand*{\getSubmissionDate}{\today}
\newcommand*{\getSubmissionLocation}{Somewhere In between}
\begin{document}
\begin{titlepage}
\centering
\includegraphics[height=20mm]{example-image-a}
\vspace{5mm}
{\huge\MakeUppercase{School of \getSchool{} --- \getFaculty{}} \par}
\vspace{5mm}
{\large\MakeUppercase{\getUniversity{}} \par}
\vspace{20mm}
% \vspace{6mm}
{\Large \getDoctype{} in \getDegree{} \par}
\vspace{15mm}
% \vspace{4mm}
{\huge\bfseries \getTitle{} \par}
\vspace{5mm}
{\huge\bfseries \foreignlanguage{ngerman}{\getTitleGer{}} \par}
\vspace{10mm}
\begin{tabular}{l l}
Author: & \getAuthor{} \\
Supervisor: & \getSupervisor{} \\
Advisors: & \getAdvisor{} \\
Submission Date: & \getSubmissionDate{} \\
\end{tabular}
\vfill{}
\includegraphics[height=15mm]{example-image-b}
\end{titlepage}
\end{document}
Eu tenho duas perguntas:
Existe uma maneira de aumentar a margem da linha da parte \getTitle{}? Quero manter o tamanho da fonte e a especificação do vspace{}. À medida que o título fica mais longo, ele tende a se dividir em 3-4 linhas muito rapidamente. Quero esticá-lo para obter cerca de 2 a 3 linhas.
Caso o título seja muito longo, a parte de autoria e o final
faculty_logo
(Imagem Exemplo B no trecho de código) iriam para a próxima página. Existe uma maneira de sempre corrigir esses dois componentes na parte inferior da página sem passar para a próxima página?
No geral, quero 2 títulos, cada um com 3 linhas do mesmo comprimento de texto definido no trecho de código, e tudo deve permanecer na mesma página.
Responder1
Provavelmente, uma macro é suficiente para produzir um \parbox
que se destaca nas margens:
\documentclass[headsepline,footsepline,footinclude=false,oneside,fontsize=11pt,paper=a4,listof=totoc,bibliography=totoc]{scrbook} % one-sided
%---------------------------------------------------------
\newsavebox\scratchbox
\newcommand\boxIntoMargins[4]{%
\savebox\scratchbox{%
\mbox{%
\kern-\dimexpr(#1)\relax
\parbox[b]{\dimexpr((#1)+(#2)+(#3))\relax}{#4}%
}%
}%
\wd\scratchbox=\linewidth
\usebox\scratchbox
}%
%---------------------------------------------------------
\usepackage{graphicx}
\usepackage[ngerman,american]{babel}
\newcommand*{\getUniversity}{University of Earth}
\newcommand*{\getFaculty}{Engineering Department}
\newcommand*{\getDegree}{Computer Science}
\newcommand*{\getSchool}{School of Public Science}
\newcommand*{\getTitle}{%
\boxIntoMargins{1.5cm}{\linewidth}{1.5cm}{%
\centering
This is a Long title that I want to stretch the Margin so that instead of 4 lines, it should only be 3 lines, and the logo at the end won't break%
}%
}
\newcommand*{\getTitleGer}{%
\boxIntoMargins{1.5cm}{\linewidth}{1.5cm}{%
\centering
This is a Long title that I want to stretch the Margin so that instead of 4 lines, it should only be 3 lines, and the logo at the end won't break%
}%
}
\newcommand*{\getAuthor}{Author}
\newcommand*{\getDoctype}{Thesis}
\newcommand*{\getSupervisor}{Faculty Professor}
\newcommand*{\getAdvisor}{Faculty Advisr}
\newcommand*{\getSubmissionDate}{\today}
\newcommand*{\getSubmissionLocation}{Somewhere In between}
\begin{document}
\begin{titlepage}
\centering
\includegraphics[height=20mm]{example-image-a}
\vspace{5mm}
{\huge\MakeUppercase{School of \getSchool{} --- \getFaculty{}} \par}
\vspace{5mm}
{\large\MakeUppercase{\getUniversity{}} \par}
\vspace{20mm}
% \vspace{6mm}
{\Large \getDoctype{} in \getDegree{} \par}
\vspace{15mm}
% \vspace{4mm}
{\huge\bfseries \getTitle{} \par}
\vspace{5mm}
{\huge\bfseries \foreignlanguage{ngerman}{\getTitleGer{}} \par}
\vspace{10mm}
\begin{tabular}{l l}
Author: & \getAuthor{} \\
Supervisor: & \getSupervisor{} \\
Advisors: & \getAdvisor{} \\
Submission Date: & \getSubmissionDate{} \\
\end{tabular}
\vfill{}
\includegraphics[height=15mm]{example-image-b}
\end{titlepage}
\end{document}
Captura de tela da compilação usando Overleaf:
Em um comentário suplementar, foi levantada a seguinte questão:
Esqueci de ajustar o valor padrão do modelo novamente. A altura da imagem b deve ser de 20mm, que ainda quebra para a segunda página. Existe uma maneira de mantê-lo sempre em uma página?
O autor da versão inicial desta resposta supõe que não há como manter sempre as coisas em uma única página, pois a condição de ter muito texto para caber em uma única página sempre pode ser atendida apenas com mais texto. ;-) E ele acha que tentar automatizar os ajustes para aumentar a chance de caber as coisas em uma única página pode não valer a pena.
Você provavelmente poderia colocar o conteúdo da página de título em um local separado, \newsavebox
onde as coisas podem exceder as medidas do papel e combinar o uso do comando \scalebox
do pacote graphicxs e o comando \usebox
para reduzir a caixa para caber no papel.
Ou tenha a página de título em um documento .tex separado, a partir do qual um arquivo .pdf separado será criado, que por sua vez será incluído em seu documento principal, por meio \includegraphics
do qual a redução para caber no tamanho do papel do documento principal pode ser feito. Dentro do documento .tex separado, uma caixa contendo a página de título que excede as medidas do papel do seu documento é enviada após o ajuste do \(pdf)pagewidth
e \(pdf)pageheight
.
O que se segue pode ser um esboço de como abordar o assunto desta forma:
\documentclass{article}
\newbox\BoxWithTitlepage
\newcommand\ShipoutAsPage[1]{%
\begingroup
\setbox\BoxWithTitlepage=\vbox{%
\hrule height 0pt
#1\ifvmode\else\expandafter\endgraf\fi
\hrule height 0pt
}%
\csname @ifundefined\endcsname{pagewidth}{}{\pagewidth=\wd\BoxWithTitlepage}%
\csname @ifundefined\endcsname{pdfpagewidth}{}{\pdfpagewidth=\wd\BoxWithTitlepage}%
\csname @ifundefined\endcsname{pageheight}{}{\pageheight=\ht\BoxWithTitlepage
\advance\pageheight\dp\BoxWithTitlepage}%
\csname @ifundefined\endcsname{pdfpageheight}{}{\pdfpageheight=\ht\BoxWithTitlepage
\advance\pdfpageheight\dp\BoxWithTitlepage}%
\shipout\vbox{\kern-1truein\hbox{\kern-1truein\box\BoxWithTitlepage}}%
\endgroup
}%
\begin{document}
\ShipoutAsPage{%
% Content of your titlepage
% Content of your titlepage
% Content of your titlepage
% Content of your titlepage
}%
\end{document}
Mas há boas razões pelas quais isso não pode ser realmente recomendado:
- Dessa forma, você não poderá facilmente ter hiperlinks da página de título para algum outro local do documento.
- O dimensionamento não ficará bem porque as fontes não estão mais em seus tamanhos naturais.
- Regras/linhas, por exemplo, de tabelas ou de imagens criadas com o
tikzpicture
ambiente e similares podem ficar muito finas ao dimensionar coisas para tamanhos menores e, portanto, podem não ser imprimíveis.
Portanto, provavelmente seria melhor ajustar as coisas "manualmente", por exemplo, ampliando um pouco a área de texto da página de título na parte inferior do papel e também kerning um pouco para cima. O seguinte é uma solução "rápida e suja", mas provavelmente pode cumprir o propósito:
\documentclass[headsepline,footsepline,footinclude=false,oneside,fontsize=11pt,paper=a4,listof=totoc,bibliography=totoc]{scrbook} % one-sided
%---------------------------------------------------------
\newsavebox\scratchbox
\newcommand\boxIntoMargins[4]{%
\savebox\scratchbox{%
\mbox{%
\kern-\dimexpr(#1)\relax
\parbox[b]{\dimexpr((#1)+(#2)+(#3))\relax}{#4}%
}%
}%
\wd\scratchbox=\linewidth
\usebox\scratchbox
}%
%---------------------------------------------------------
\usepackage{graphicx}
\usepackage[ngerman,american]{babel}
\newcommand*{\getUniversity}{University of Earth}
\newcommand*{\getFaculty}{Engineering Department}
\newcommand*{\getDegree}{Computer Science}
\newcommand*{\getSchool}{School of Public Science}
\newcommand*{\getTitle}{%
\boxIntoMargins{1.5cm}{\linewidth}{1.5cm}{%
\centering
This is a Long title that I want to stretch the Margin so that instead of 4 lines, it should only be 3 lines, and the logo at the end won't break%
}%
}
\newcommand*{\getTitleGer}{%
\boxIntoMargins{1.5cm}{\linewidth}{1.5cm}{%
\centering
This is a Long title that I want to stretch the Margin so that instead of 4 lines, it should only be 3 lines, and the logo at the end won't break%
}%
}
\newcommand*{\getAuthor}{Author}
\newcommand*{\getDoctype}{Thesis}
\newcommand*{\getSupervisor}{Faculty Professor}
\newcommand*{\getAdvisor}{Faculty Advisr}
\newcommand*{\getSubmissionDate}{\today}
\newcommand*{\getSubmissionLocation}{Somewhere In between}
\begin{document}
\begin{titlepage}
\enlargethispage{1cm}%
\hrule height 0mm
\kern-.5cm
\centering
\includegraphics[height=20mm]{example-image-a}
\vspace{5mm}
{\huge\MakeUppercase{School of \getSchool{} --- \getFaculty{}} \par}
\vspace{5mm}
{\large\MakeUppercase{\getUniversity{}} \par}
\vspace{20mm}
% \vspace{6mm}
{\Large \getDoctype{} in \getDegree{} \par}
\vspace{15mm}
% \vspace{4mm}
{\huge\bfseries \getTitle{} \par}
\vspace{5mm}
{\huge\bfseries \foreignlanguage{ngerman}{\getTitleGer{}} \par}
\vspace{10mm}
\begin{tabular}{l l}
Author: & \getAuthor{} \\
Supervisor: & \getSupervisor{} \\
Advisors: & \getAdvisor{} \\
Submission Date: & \getSubmissionDate{} \\
\end{tabular}
\vfill{}
\includegraphics[height=20mm]{example-image-b}
\end{titlepage}
\end{document}
Caso a proporção ⟨altura da margem superior⟩:⟨altura da margem inferior⟩ não seja 1: 1, talvez seja necessário fazer um pouco mais de cálculo para garantir que, com o kerning vertical para cima enquanto aumenta a área de tipo para baixo, essa proporção ainda está preservado.
Caso a proporção ⟨largura da margem à esquerda⟩:⟨largura da margem à direita⟩ não seja 1: 1, talvez seja necessário fazer um pouco mais de cálculo para garantir que com
\boxIntoMargins{<amount of horizontal space that sticks into left margin>}%
{\linewidth}%
{<amount of horizontal space that sticks into right margin>}%
{...}%
essa proporção é preservada.
Provavelmente, com a linha,
{\huge\MakeUppercase{School of \getSchool{} --- \getFaculty{}} \par}
pode parecer bom quando as coisas são organizadas de modo que, no caso de uma quebra de linha ocorrer logo antes do primeiro travessão, e toda a string que denota a faculdade caiba em uma única linha por conta própria. um travessão é anexado atrás \getFaculty{}
para que a sequência do corpo docente seja aninhada entre dois travessões. ;-)
Aliás: o código do seu exemplo me lembraPágina de rosto e página de título com scrbook com página vazia indesejada após a página de título. Provavelmente você encontrará alguns insights úteis lá.