
親愛なる皆様、
最近、詩や散文をタイプセットしているのですが、日付に問題があります。具体的には、日付を前のテキストの直後に表示し、それに固執したいのです (たとえば、改ページは不要)。散文をタイプセットするときはいつでも、このことは明らかです。次の回避策を参照してください。
\newcommand{\dated}[1]{\nobreak\par\noindent\null\hfill\textit{#1}}
しかし、環境にverseがある場合verse
、LaTeXは環境の終わりの後には常にbreakが望ましいと考えるため、事実上不可能になります\end{verse}
。私はグーグルで調べましたが、breakを防ぐ方法を見つけることができませんでした。後環境。
散文の場合、それは魔法のように機能します。
\documentclass[12pt, oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[papersize={11cm, 15cm}, textwidth=10cm, textheight=11.2cm]{geometry}
\usepackage{lipsum}
\newcommand{\dated}[1]{\nobreak\par\noindent\null\hfill\textit{#1}}
\begin{document}
\null\vspace{2.3cm}
\lipsum[1]
\dated{30.01.2018}
\end{document}
しかし、詩の場合はそうではありません。
\documentclass[12pt, oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[papersize={11cm, 15cm}, textwidth=10cm, textheight=11.2cm]{geometry}
\usepackage{lipsum}
\newcommand{\dated}[1]{\nobreak\par\noindent\null\hfill\textit{#1}}
\begin{document}
\lipsum[1]
\begin{verse}
THERE was a young lady of Niger \\
Who smiled as she rode on a Tiger; \\
They came back from the ride \\
With the lady inside, \\
And the smile on the face of the Tiger.
\end{verse}
\dated{30.01.2018}
\end{document}
\needspace
すべての詩がそれらの間に入るため、使用できません\begin{verse}
... \end{verse}
、そして詩は数百あるため、\needspace
詩の最後の行ごとに貼り付けることはできません。
\nobreak
おそらく、何らかの方法で詩を再定義することは可能でしょうか? または、その後に機能させるための他のトリックはありますか\end{verse}
?
どのような助けでも大歓迎です!
答え1
このソリューションでは、日付を verse 環境内に配置し、最後の行に添付します。 または を使用して verse 環境の末尾のスペースの一部を削除することもできますが\unskip
、\vskip-\lastskip
すでに次のページに移動している場合は役に立ちません。
\documentclass[12pt, oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[papersize={11cm, 15cm}, textwidth=10cm, textheight=11.2cm, showframe]{geometry}
\usepackage{lipsum}
\newcommand{\dateverse}[1]{\hfill\rlap{\hspace{\rightmargin}%
\llap{\raisebox{-\baselineskip}{\textit{#1}}}}}
\begin{document}
\lipsum[1]
\begin{verse}
THERE was a young lady of Niger \\
Who smiled as she rode on a Tiger; \\
They came back from the ride \\
With the lady inside, \\
And the smile on the face of the Tiger.
\dateverse{30.01.2018}
\end{verse}
\end{document}
日付をディセンダーに変えていることに気づきました\raisebox
。LaTeX は、ページの下部でベースラインのみを揃えますが、ディセンダーは揃えません。ベースラインを移動するには、前の行をボックス内に含める必要があります。
\documentclass[12pt, oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[papersize={11cm, 15cm}, textwidth=10cm, textheight=11.2cm, showframe]{geometry}
\usepackage{lipsum}
\newcommand{\dated}[1]{\ifvmode\else\newline\fi
\null\hfill\rlap{\hspace{\rightmargin}\llap{\textit{#1}}}}
\begin{document}
\lipsum[1]
\begin{verse}
THERE was a young lady of Niger \\
Who smiled as she rode on a Tiger; \\
They came back from the ride \\
With the lady inside, \\
\parbox[b]{\dimexpr \linewidth-\itemindent}%
{And the smile on the face of the Tiger.
\dated{30.01.2018}}
\end{verse}
\end{document}