환경 종료 후 페이지 나누기 방지(예: 절)

환경 종료 후 페이지 나누기 방지(예: 절)

친애하는 신사숙녀 여러분,

최근에 운문과 산문을 조판하고 있는데 날짜에 문제가 있습니다. 특히, 날짜가 앞의 텍스트 바로 뒤에 나타나도록 하고 싶습니다(예: 페이지 나누기 없음). 이는 산문을 조판할 때마다 분명한 것 같습니다. 다음 해결 방법을 참조하세요.

\newcommand{\dated}[1]{\nobreak\par\noindent\null\hfill\textit{#1}}

그러나 환경의 구절을 사용하면 LaTeX는 환경의 끝 verse이후에 중단이 항상 유리하다고 생각하기 때문에 사실상 불가능합니다 . \end{verse}구글링을 해보았으나 깨지는 것을 방지할 수 있는 방법을 찾지 못했습니다.~ 후에환경.

산문에서는 매력처럼 작동합니다.

\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 환경 내부에 날짜를 넣고 마지막 줄에 첨부합니다. 구절 환경의 끝 부분에 있는 공간 중 일부를 사용 \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}

관련 정보