
Ich schreibe eine Dokumentklasse, in der ich eine Textzeile am unteren Ende des Textbereichs nach den Fußnoten platzieren möchte, sodass ihr Platz immer völlig festgelegt ist. Eine Lösung hierfür ist wie folgt:
\documentclass{article}
\usepackage{lipsum,graphicx}
\title{A sample title}
\author{John Doe}
\makeatletter
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \@date}%
\end{center}%
\begin{figure}[!b]
\copyright\ 2022 John Doe \hfill Department of Mathematics
\end{figure}
\par
\vskip 1.5em
}
\makeatother
\begin{document}
\maketitle
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\end{document}
Aus bestimmten Gründen möchte ich jedoch keine Float-Umgebung verwenden. Können Sie mir eine andere Lösung vorschlagen (vorzugsweise ohne das Laden zusätzlicher Pakete)?
Antwort1
Es gibt Möglichkeiten, Text auf einer Seite absolut zu positionieren. Beispielsweise bietet tikz hierfür Mittel an.
Wenn eine aktuelle LaTeX-Version verwendet wird, für die Shipout-Hooks verfügbar sind, können Sie dem Hook Code hinzufügen.shipout/foreground
.
Der Hook shipout/foreground
bezieht sich auf eine Bildumgebung mit oberer linker Ecke (0,0) in der oberen linken Ecke der Seite und einer Einheitenlänge von 1pt.
(Damit auf der Seite etwas passiert, müssen die y-/Sekundenkomponenten der Koordinaten negativ sein. Bei einer aktuellen LaTeX-Version ist es innerhalb einer picture
-Umgebung nicht mehr nötig, sich um Normalisierung \dimexpr
und Längenregister zu kümmern \unitlength
, da dies automatisch erfolgt.)
\documentclass[twoside]{article}
\csname @ifundefined\endcsname{pagewidth}{}{\pagewidth=\paperwidth}%
\csname @ifundefined\endcsname{pdfpagewidth}{}{\pdfpagewidth=\paperwidth}%
\csname @ifundefined\endcsname{pageheight}{}{\pageheight=\paperheight}%
\csname @ifundefined\endcsname{pdfpageheight}{}{\pdfpageheight=\paperheight}%
\usepackage{lipsum}
\title{A sample title}
\author{John Doe}
\makeatletter
\newcommand\foo[1]{#1}
\def\@maketitle{%
\newpage
% If you want this on the titlepage only, use \AddToHookNext instead of \AddToHook
\AddToHook{shipout/foreground}{%
\put(\dimexpr 1in+\ifodd\thepage\oddsidemargin\else\evensidemargin\fi\relax,
\foo{\dimexpr-\paperheight+.5\dimexpr\paperheight-(1in+\topmargin+\headheight+\headsep+\textheight+\footskip)+\ht\strutbox\relax\relax})%
{%
\hbox to\textwidth{\copyright\ 2022 John Doe \hfill Department of Mathematics}%
}%
}
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \@date}%
\end{center}%
\par
\vskip 1.5em
}
\makeatother
\begin{document}
\maketitle
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\newpage
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\end{document}
Wenn Sie eine nicht ganz so aktuelle LaTeX-Version verwenden, laden Sie am besten das Paketeso-Bild:
Der folgende Code zeigt ein Beispiel, bei dem der Befehl\AddToShipOutPicture
des Paketseso-Bildist mit einer Bildumgebung kombiniert, in der der Befehl \put
zum Positionieren von Text verwendet werden kann.
\documentclass[twoside]{article}
\usepackage{lipsum,eso-pic}
\title{A sample title}
\author{John Doe}
\makeatletter
\newcommand\ConvertToUnitlength[1]{%
\strip@pt\dimexpr#1*65536/\number\dimexpr\unitlength\relax\relax
}%
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \@date}%
\end{center}%
% If you want this on every page, use \AddToShipoutPicture.
% If you want this on the title-page only, use \AddToShipoutPicture*.
\AddToShipoutPicture{%
\vbox to \paperheight{%
\hsize=\paperwidth
%----------------------------------------------------
% Within the \vbox do whatever you like:
% e.g., use a picture-environment:
%----------------------------------------------------
\setlength{\unitlength}{1cm}%
\begin{picture}(\ConvertToUnitlength{\paperwidth},
\ConvertToUnitlength{\paperheight})(0,0)%
% Inside this picture 0,0 is the bottom left corner.
% Unit is cm.
% If you wish to use length-parameter or \dimexppr, you can use \ConvertToUnitlength.
% With recent LaTeX \ConvertToUnitlength is not really needed, but
% you can use it for hiding ( and ) belonging to a \dimexpr
% from the scanning for a )-delimiter of a \put-command.
% You can also use eso-pic's \LenToUnit for this purpose.
% If you need to learn about length-parameters of page-layout, see the documentation of the package "layout".
\put(\ConvertToUnitlength{\dimexpr 1in+\ifodd\thepage\oddsidemargin\else\evensidemargin\fi\relax},
\ConvertToUnitlength{.5\dimexpr\paperheight-(1in+\topmargin+\headheight+\headsep+\textheight+\footskip)+\ht\strutbox\relax})%
{%
\hbox to\textwidth{\copyright\ 2022 John Doe \hfill Department of Mathematics}%
}%
\end{picture}%
%----------------------------------------------------
}%
}%
\par
\vskip 1.5em
}
\makeatother
\begin{document}
\maketitle
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\newpage
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\end{document}
Antwort2
Alternativ, wenn Sie grobe Hacks mögen und der Text nur auf der Titelseite erscheinen soll und die Titelseite in jedem Fall Fußnoten enthält, sodass die Regel, die Haupttext von Fußnoten trennt, gezogen wird, und Sie die Titelseite über beenden \newpage
, können Sie \footnotetext
direkt davor verwenden \newpage
, um eine letzte „Fußnote“ mit Ihrem Copyright-Hinweis zu platzieren. Wenn Hyperref verwendet wird, müssen die Dinge in eine -Umgebung eingebunden werden NoHyper
. Ich weiß nicht, wie dies mit \raggedbottom
/ interagiert \flushbottom
.
\documentclass[twoside]{article}
\usepackage{lipsum,hyperref}
\title{A sample title}
\author{John Doe}
\makeatletter
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \@date}%
\end{center}%
% If you want this on every page, use \AddToShipoutPicture.
% If you want this on the title-page only, use \AddToShipoutPicture*.
\par
\vskip 1.5em
}
\makeatother
\begin{document}
\maketitle
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\begingroup
\makeatletter
\long\def\@makefntext#1{\noindent#1}%
\begin{NoHyper}%
\footnotetext{\par\vspace*{\dimexpr\footskip-2\baselineskip\relax}{\normalsize\copyright\ 2022 John Doe \hfill Department of Mathematics}}%
\end{NoHyper}%
\endgroup
\newpage
Text goes here\footnote{A footnote} and\footnote{Another footnote}
\lipsum[2]
\end{document}