![Lista personalizada de números de páginas de listagem que não funcionam](https://rvso.com/image/309863/Lista%20personalizada%20de%20n%C3%BAmeros%20de%20p%C3%A1ginas%20de%20listagem%20que%20n%C3%A3o%20funcionam.png)
Já faz algum tempo que uso esse modelo de látex específico e continuo adicionando e alterando-o para ser o que desejo. Recentemente tentei reformatar para me livrar dos pontos iniciais no TOC, LOF, LOT e LOL, e consegui remover todos eles renovando o comando, \cftdot
mas isso não pareceu funcionar para o LOL.
Usei o \titlecontents
comando do titletoc
pacote para alterar as configurações do LOL, mas isso deixou os números das páginas desalinhados com o restante das listas. Eu tentei \hfill
e \titlerule*[0.0em]{.}
antes de \contentspage
resolver o problema, mas nenhum deles funcionou.
O exemplo de trabalho atual está sendo demonstrado com \hfill
.
\documentclass[12pt]{article}
\usepackage{geometry}
\geometry{letterpaper}
\geometry{margin = 1.0in}
\usepackage[parfill]{parskip}
\usepackage{setspace}
\singlespacing
\usepackage[utf8x]{inputenc}
\usepackage{microtype}
\usepackage{listings}
\usepackage{graphicx}
\usepackage[justification = centering]{caption}
\usepackage[section]{placeins}
\usepackage{float}
\usepackage[nottoc,notlof,notlot]{tocbibind}
\usepackage[titles]{tocloft}
\usepackage{titletoc}
\renewcommand{\cftsecfont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftsecpagefont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftdot}{}
\renewcommand\lstlistlistingname{List of Scripts}
\renewcommand\lstlistingname{Script}
\contentsuse{lstlisting}{lol}
\titlecontents{lstlisting}[1.5em]
{\hspace{2.3em}}
{\contentslabel{2.3em}}
{\hspace*{-2.3em}}
{\hfill\contentspage}
\usepackage{hyperref}
\pdfoutput=1
\hypersetup{
unicode=false,
pdftoolbar=true,
pdfmenubar=true,
pdffitwindow=true,
pdfstartview={FitH},
pdftitle={Title},
pdfauthor={Author},
pdfsubject={Subject},
pdfcreator={Producer},
pdfproducer={Producer},
pdfdisplaydoctitle=true,
pdfnewwindow=true,
colorlinks=true,
linkcolor=black,
citecolor=black,
filecolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\lstlistoflistings
\section{Here is A Section}
\begin{figure}[H]
\centering
\includegraphics[width = 2cm]{boats}
\caption{A boat}
\end{figure}
\begin{table} [H]
\begin{center}
\begin{tabular}{ c | c }
Title 1 & Title 2 \\ \hline
Stuff & More stuff
\end{tabular}
\caption{A Table}
\end{center}
\end{table}
\begin{lstlisting}[language = Matlab, basicstyle = \scriptsize, numberstyle = \scriptsize, caption = A Listing]
%%
clear;clc;close all;format compact;
%%
x = 5;
y = 6;
x + y = z;
disp(z);
\end{lstlisting}
\end{document}
Como pode ser visto no exemplo abaixo, o número da página da listagem está recuado por algum motivo que não consegui descobrir. Tenho certeza que é fácil, mas ainda não encontrei.
Como observação, eu uso significativamente mais pacotes e modificações do que este, mas estes são os mais básicos para os quais ele ainda será compilado corretamente.
Responder1
tocloft
conecta - se apenas ao padrão ToC
e comandos e arquivos e aqueles que são definidos usando .LoF
LoT
\newlistof
Tudo isso não é coberto pelo LoL
, que usa a configuração tradicional de \l@...
macros semelhantes.
Em listings.sty
encontramos
\def\l@lstlisting#1#2{\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}}
que é a macro relevante para a configuração de linha nas listas de conteúdo. O próximo nível mais profundo que encontramos \@dottedtocline
é uma macro do kernel LaTeX, usando \@dotsep
como espaço de separação entre dois pontos da linha de conteúdo. O valor padrão é 4.5
. Ao aumentar esse número para 5.000 (que é muito grande), os pontos provavelmente ficarão fora de vista aqui.
Eu não queria mudar \@dotsep
globalmente, então corrigi o \l@lstlisting
comando (usando um grupo para descartar as configurações depois de \l@lstlisting
usado)
\makeatletter % Patching to prevent interference
\xpatchcmd{\l@lstlisting}{\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}}{%
\begingroup\renewcommand{\@dotsep}{5000}\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}\endgroup}{%
}{}
\makeatother
Aqui está o código ( titletoc
coisas relacionadas comentadas)
\documentclass[12pt]{article}
\usepackage{geometry}
\geometry{letterpaper}
\geometry{margin = 1.0in}
\usepackage[parfill]{parskip}
\usepackage{setspace}
\singlespacing
\usepackage[utf8x]{inputenc}
\usepackage{microtype}
\usepackage[demo]{graphicx}
\usepackage[justification = centering]{caption}
\usepackage[section]{placeins}
\usepackage{float}
\usepackage[nottoc,notlof,notlot]{tocbibind}
\usepackage{listings}
\usepackage[titles]{tocloft}
\usepackage{xpatch}
%\usepackage{titletoc}
\renewcommand{\cftsecfont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftsecpagefont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftdotsep}{\cftnodots}
\renewcommand\lstlistlistingname{List of Scripts}
\renewcommand\lstlistingname{Script}
\makeatletter % Patching to prevent interference
\xpatchcmd{\l@lstlisting}{\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}}{%
\begingroup\renewcommand{\@dotsep}{5000}\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}\endgroup}{%
}{}
\makeatother
%\contentsuse{lstlisting}{lol}
%\titlecontents{lstlisting}[1.5em]
% {\hspace{2.3em}}
% {\contentslabel{2.3em}}
% {\hspace*{-2.3em}}
% {\hfill\contentspage}
\usepackage{hyperref}
\pdfoutput=1
\hypersetup{
unicode=false,
pdftoolbar=true,
pdfmenubar=true,
pdffitwindow=true,
pdfstartview={FitH},
pdftitle={Title},
pdfauthor={Author},
pdfsubject={Subject},
pdfcreator={Producer},
pdfproducer={Producer},
pdfdisplaydoctitle=true,
pdfnewwindow=true,
colorlinks=true,
linkcolor=black,
citecolor=black,
filecolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\lstlistoflistings
\section{Here is A Section}
\begin{figure}[H]
\centering
\includegraphics[width = 2cm]{boats}
\caption{A boat}
\end{figure}
\begin{table} [H]
\begin{center}
\begin{tabular}{ c | c }
Title 1 & Title 2 \\ \hline
Stuff & More stuff
\end{tabular}
\caption{A Table}
\end{center}
\end{table}
\begin{lstlisting}[language = Matlab, basicstyle = \scriptsize, numberstyle = \scriptsize, caption = A Listing]
%%
clear;clc;close all;format compact;
%%
x = 5;
y = 6;
x + y = z;
disp(z);
\end{lstlisting}
\end{document}