
Bearbeitung 1: Das Bild sollte „Drei Zeilen statt vier“ haben.
Bearbeitung 2: Kompilierbarer Code aktualisiert.
Ich bin neu bei Latex und habe den folgenden Vorlagencode, der einen Titel für meine Abschlussarbeit bereitstellt:
\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}
Ich habe zwei Fragen:
Gibt es eine Möglichkeit, den Zeilenrand für den \getTitle{}-Teil zu vergrößern? Ich möchte die Schriftgröße und die vspace{}-Spezifikation beibehalten. Wenn der Titel länger wird, bricht er sehr schnell in 3-4 Zeilen um. Ich möchte ihn strecken, um etwa 2-3 Zeilen zu erhalten.
Falls der Titel zu lang ist, würden der Autorschaftsteil und das Finale
faculty_logo
(Bildbeispiel B im Codeausschnitt) auf die nächste Seite umbrechen. Gibt es eine Möglichkeit, diese beiden Komponenten immer am unteren Seitenrand zu fixieren, ohne auf die nächste Seite zu wechseln?
Insgesamt möchte ich 2 Überschriften mit jeweils 3 Zeilen und der gleichen Textlänge, die im Code-Snippet definiert ist, und alles sollte auf der gleichen Seite bleiben.
Antwort1
Vermutlich reicht auch ein Makro, welches ein \parbox
in den Rand hineinragendes Bild erzeugt:
\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}
Screenshot der Kompilierung mit Overleaf:
In einem ergänzenden Kommentar wurde folgende Frage gestellt:
Ich habe wieder vergessen, den Standardwert für die Vorlage anzupassen. Die Höhe des Bildes b sollte 20mm betragen, was immer noch auf die zweite Seite umbricht. Gibt es eine Möglichkeit, es immer auf einer Seite zu halten?
Der Autor der Erstveröffentlichung dieser Antwort geht davon aus, dass es nicht möglich ist, alles immer auf einer Seite unterzubringen, da die Bedingung, dass zu viel Text für eine Seite vorhanden ist, immer dadurch erfüllt werden kann, dass man einfach mehr Text hinzufügt. ;-) Und er meint, dass der Versuch, Optimierungen zu automatisieren, um die Wahrscheinlichkeit zu erhöhen, dass alles auf eine Seite passt, den Aufwand nicht wert ist.
Sie könnten den Inhalt der Titelseite wahrscheinlich in ein separates Feld einfügen, \newsavebox
wo er möglicherweise die Maße des Papiers überschreitet, und die Verwendung des Befehls \scalebox
aus dem Paket graphicxs und des Befehls \usebox
zum Verkleinern des Felds, damit es auf das Papier passt, kombinieren.
Oder haben Sie das Titelblatt in einem separaten .tex-Dokument, aus dem eine separate .pdf-Datei erstellt wird, die wiederum in Ihr Hauptdokument eingefügt wird, wobei eine Verkleinerung auf die Größe des Papiers des Hauptdokuments erfolgen kann. Innerhalb des separaten .tex-Dokuments wird eine Box mit dem Titelblatt, das die Maße des Papiers Ihres Dokuments überschreitet, nach dem Anpassen der und \includegraphics
ausgegeben . Im Folgenden finden Sie eine Übersicht, wie Sie die Sache auf diese Weise angehen können:\(pdf)pagewidth
\(pdf)pageheight
\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}
Es gibt aber gute Gründe, warum dies nicht wirklich zu empfehlen ist:
- Auf diese Weise können Sie nicht einfach Hyperlinks von der Titelseite zu einer anderen Stelle im Dokument erstellen.
- Die Skalierung sieht nicht gut aus, da die Schriftarten nicht mehr ihre natürliche Größe haben.
- Linien beispielsweise von Tabellen oder mit der
tikzpicture
Umgebung erstellten Bildern usw. werden beim Verkleinern möglicherweise zu dünn und sind daher möglicherweise nicht druckbar.
Daher ist es wahrscheinlich besser, die Dinge „von Hand“ zu optimieren, z. B. den Satzspiegel der Titelseite etwas nach unten zu vergrößern und auch etwas nach oben zu kernen. Das Folgende ist eine „schnelle und schmutzige“ Lösung, könnte aber wahrscheinlich den Zweck erfüllen:
\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}
Falls das Verhältnis ⟨Höhe des oberen Rands⟩:⟨Höhe des unteren Rands⟩ nicht 1:1 ist, müssen Sie möglicherweise noch etwas mehr berechnen, um sicherzustellen, dass bei vertikalem Kerning nach oben und gleichzeitiger Vergrößerung des Satzspiegels nach unten dieses Verhältnis weiterhin erhalten bleibt.
Falls das Verhältnis ⟨Breite des linken Randes⟩:⟨Breite des rechten Randes⟩ nicht 1:1 ist, müssen Sie möglicherweise noch ein wenig mehr rechnen, um sicherzustellen, dass mit
\boxIntoMargins{<amount of horizontal space that sticks into left margin>}%
{\linewidth}%
{<amount of horizontal space that sticks into right margin>}%
{...}%
dieses Verhältnis bleibt erhalten.
Vielleicht sieht es bei der Zeile
{\huge\MakeUppercase{School of \getSchool{} --- \getFaculty{}} \par}
ja nett aus, wenn es so angeordnet ist, dass sowohl ein Zeilenumbruch direkt vor dem ersten Geviertstrich erfolgt, als auch der gesamte String, der die Fakultät angibt, für sich allein in eine Zeile passt. Dahinter wird dann ein Geviertstrich angehängt, \getFaculty{}
sodass der String, der die Fakultät angibt, zwischen zwei Geviertstrichen eingebettet ist. ;-)
Übrigens: Der Code Ihres Beispiels erinnert mich anDeckblatt und Titelseite mit Notizbuch mit unerwünschter leerer Seite nach der Titelseite. Wahrscheinlich finden Sie dort einige hilfreiche Erkenntnisse.