Re: Cambiare colore delle section e item

#55968
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Se vai a cercare nella cartella dove si trovano tutti i pacchetti, in particolare se cerchi book.cls e lo apri, trovi che \section è definita così:`\newcommand\section{\@startsection {section}{1}{\z@}%
    {-3.5ex \@plus -1ex \@minus -.2ex}%
    {2.3ex \@plus.2ex}%
    {\normalfont\Large\bfseries}}`Quindi devi andare a cercare che cosa fa \@startsection per modificare cme vuoi tu.

    Se vai a fondo vedi che in realtà quel comando è definito non nella classe, ma nel nucleo di LaTeX, vale a dire nel file latex.ltx. Se cerchi questo file e lo apri, trovi che \@startsection è definito così:`\def\@startsection#1#2#3#4#5#6{%
    \if@noskipsec \leavevmode \fi
    \par
    \@tempskipa #4\relax
    \@afterindenttrue
    \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} \def\@sect#1#2#3#4#5#6[#7]#8{% \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
    \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
    \fi
    \@tempskipa #5\relax
    \ifdim \@tempskipa>\z@
    \begingroup
    #6{%
    \@hangfrom{\hskip #3\relax\@svsec}%
    \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}%
    \else
    \def\@svsechd{%
    #6{\hskip #3\relax
    \@svsec #8}%
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}}%
    \fi
    \@xsect{#5}}
    `Definizione lunghissima che letta correttamente mostra che in effetti il numero della sezione viene scritto dal comando \@sect.`\def\@startsection#1#2#3#4#5#6{%
    \if@noskipsec \leavevmode \fi
    \par
    \@tempskipa #4\relax
    \@afterindenttrue
    \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} \def\@sect#1#2#3#4#5#6[#7]#8{% \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
    \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
    \fi
    \@tempskipa #5\relax
    \ifdim \@tempskipa>\z@
    \begingroup
    #6{%
    \@hangfrom{\hskip #3\relax\@svsec}%
    \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}%
    \else
    \def\@svsechd{%
    #6{\hskip #3\relax
    \@svsec #8}%
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}}%
    \fi
    \@xsect{#5}}
    `Il numero della sezione o sottosezione dovrebbe essere rappresentato dall’argomento #6; quindi la modifica consiste nel sostituire #6 con \textcolor{red}{#6} (per avere il numero rosso).
    Come vedi la cosa è piuttsto difficile da fare direttamente sulle macro originali, ed è per questo che sarebbe meglio riferirsi ai pacchetti indicati nel paragrafo 9.3.5 de L’Arte di scrivere con LaTeX

    Go to top