Wypełnienie pozostałej części strony kropkami (ponownie)
Mam takie samo pytanie jak Wypełnianie pozostałej części strony kropkami . Oznacza to, że pozostałą część strony chcę wypełnić kropkami. Przyjęta odpowiedź jest prawie idealna, ale kiedy używam jej w środku \begin{enumeration}
, kropki nie są odpowiednio wcięte. Czy jest sposób, aby to zadziałało?
Znalazłem odpowiedzi w innych postach sugerujące, że leavevmode
mogłoby to pomóc, ale wydaje się, że nie działa, gdziekolwiek je dodam.
Edytowano: oto kod, który wypróbowałem. Po prostu dodałem leavevmode
przed cleaders
wyżej wymienioną zaakceptowaną odpowiedzią.
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\usepackage{lipsum}
\makeatletter
\newcommand*\dotcolumnfill{%
\par
\null
\vskip -\ht\strutbox
\xleaders \hb@xt@ \hsize {%
\strut \leavevmode \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
}\vfill
\vskip \ht\strutbox
\break
}
\makeatother
\begin{document}
\begin{enumerate}
\item \lipsum*[1]
\dotcolumnfill
\item \lipsum*[2]
\end{enumerate}
\end{document}
Oto wynik:

Odpowiedzi
Możesz użyć linegoal
pakietu, aby dowiedzieć się, jak szeroka powinna być kolumna z kropkami. Wymaga to 3 kompilacji, aby ustalić prawidłową wartość.
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\usepackage{linegoal}
\usepackage{lipsum}
\makeatletter
\newcommand*\dotcolumnfill{%
\par\noindent\mbox{}\@tempdima=\dimexpr\linewidth-\linegoal
\null
\vskip -\ht\strutbox
\xleaders \hb@xt@ \hsize {%
\hspace{\@tempdima}\strut \leavevmode \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
}\vfill
\vskip \ht\strutbox
\break
}
\makeatother
\begin{document}
\makeatletter
\begin{enumerate}
\item \lipsum*[1]
\dotcolumnfill
\item \lipsum*[2]
\end{enumerate}
\lipsum*[3]
\dotcolumnfill
\end{document}

Jeśli chodzi o dodatkowe pytanie postawione w komentarzach.
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\usepackage{linegoal}
\usepackage{lipsum}
\makeatletter
\newcommand*\dotcolumnfill[1][0]{%
\par\noindent\mbox{}\@tempdima=\dimexpr\linewidth-\linegoal
\null
\vskip -\ht\strutbox
\ifnum#1=0\relax
\xleaders \hb@xt@ \hsize {%
\hspace{\@tempdima}\strut \leavevmode \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
}\vfill
\vskip \ht\strutbox
\break
\else
\@tempcnta=0\relax
\loop
\advance\@tempcnta by1\relax
\hb@xt@ \hsize {%
\hspace{\@tempdima}\strut \leavevmode \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
}%
\ifnum\@tempcnta<#1\relax
\repeat
\fi
}
\makeatother
\begin{document}
\makeatletter
\begin{enumerate}
\item \lipsum*[1]
\dotcolumnfill
\item \lipsum*[2]
\dotcolumnfill[4]
\item \lipsum*[3]
\end{enumerate}
\lipsum*[4]
\dotcolumnfill
\end{document}

Sprawdź poniższe makro.
\makeatletter
\newcommand*\dotcolumnfill{%
\par
\null
\vskip -\ht\strutbox
\xleaders \hb@xt@ \hsize {%
\strut \leavevmode \hphantom{1111l}\cleaders \hb@xt@ .44em{\hss.\hss}\hfill
}\vfill
\vskip \ht\strutbox
\break
}
\makeatother
