Re: Problema con una ridefinizione di comando

#20552
Up
0
Down
::


Ho risolto ridefinendo e semplificando i comandi di latex standard per la gestione dei vari sommari. Ho dovuto però definire due nuovi counter.
ecco il codice `
\documentclass[a4paper]{article}
\usepackage{lipsum}
\makeatletter
\def\contenutotoc{%
\begingroup
\makeatletter
\@input{\jobname.abc}%
\if@filesw
\expandafter\newwrite\csname tf@abc\endcsname
\immediate\openout \csname tf@abc\endcsname \jobname.abc\relax
\fi
\@nobreakfalse
\endgroup}
\def\chiudiscrittura{\closeout\csname tf@abc\endcsname}
\def\cambiasezionetoc{
\def\oldesection{\relax}
\let\oldsection=\section
\def\seziones##1{\oldsection*{##1}}
\def\sezione##1{\oldsection{##1}
\relax
aggiungilinea{section}{##1} %%%%
}

\def\section{\@ifstar\seziones\sezione}
\def\oldsubsection{\relax}
\let\oldsubsection=\subsection
\def\subsection##1{\oldsubsection{##1}
\aggiungilinea{subsection}{##1} %%%%
}
}
\def\ripristinasezione{
\let\section=\oldsection%
\let\subsection=\oldsubsection%
}
\def\minisommario{
\cambiasezionetoc
\hrule
\vskip 5pt
\textsc{Table of Contents}\par
\contenutotoc\par
\vskip 7pt
\hrule
\vskip 15pt plus 5pt minus 3pt
}
\newcounter{articolosezione} %%%%
\newcounter {articolosottosezione}[articolosezione] %%%%
\renewcommand \thearticolosezione {\@arabic\c@articolosezione.} %%%%
\renewcommand\thearticolosottosezione {\thearticolosezione\@arabic\c@articolosottosezione.} %%%%
\newcommand*\envname[1]{\textsf{#1}}
\def\aggiungilinea#1#2{%%%%%
\aggiungicontenuti{\protect\contenuti{#1}{#2}{\thepage}}} %%%%
\long\def\aggiungicontenuti#1{%%%%
\def\@out{\csname tf@abc\endcsname}%%%%
\protected@write\@out %%%%
{\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%%%%%
{\string\mbox{}{#1}}}%%%%
\def\contenuti#1{\csname s@#1\endcsname}%%%%
\def\s@section#1#2{%%%%
\stepcounter{articolosezione}%%%%
\thearticolosezione\ #1 \hfill #2\par}%%%%
\def\s@subsection#1#2{%%%
\stepcounter{articolosottosezione}%%%%
\hskip 15pt \thearticolosottosezione\ #1 \hfill #2\par}%%%%
\makeatother

\begin{document}
\minisommario
\section{Una \envname{Prova}}
\lipsum[3]\lipsum[4]
\subsection{Questa \`{e} una sottosezione}
\lipsum[2]\lipsum[2]\lipsum[2]
\section{prova ancora}
\chiudiscrittura
\end{document}`

Ho indicato con %%% i cambiamenti rispetto alla prima versione. So di aver scoperto l’acqua calda, ma ho capito finalmente come funziona. E ho risolto usando write al posto di immediate\write il problema delle pagine.

Go to top