Testatine in capitoli non numerati modificando \chapter

  • Creatore
    Topic
  • #65475
    Up
    0
    Down
    ::


    Come si può automatizzarlo? Vorrei evitare di dover specificare ogni volta \markboth o \chaptermark.

    Avevo pensato a una soluzione di questo tipo:
    `\let\old@schapter=\@schapter
    \def\@schapter#1{\old@schapter{#1}\chaptermark{#1}}
    `
    e funziona correttamente, ma non mi piace che l’argomento venga letto e reimmesso nel flusso di lettura. Qualcosa del tipo:
    `\apptocmd\@schapter{\chaptermark{#1}}`
    invece non funziona e non capisco perché: non ci sono argomenti opzionali o robe simili. 😕

    Il fatto che @schapter sia definito usando newcommand con l’asterisco può centrare qualcosa?
    `\newcommand*{\@schapter}[1]{…}`
    Uso arsclassica, in caso importasse, con scrbook (e minitoc). Se può servire ci metto un esempio minimo.

    Tra l’altro, tutte le volte in cui questo problema è stato posto sul forum, è stata sempre suggerita la soluzione manuale (\markboth per intenderci) e mai di automatizzarlo aggiungendo qualcosa nel preambolo. Ci sono motivazioni per questo? Qualche motivo per cui sarebbe bene evitarlo? (A parte le idiosincrazie di qualcuno per i capitoli non numerati…:))

    Grazie,
    Antonio

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #65476
      Up
      0
      Down
      ::

      antonio.macrì” post=64544Come si può automatizzarlo? Vorrei evitare di dover specificare ogni volta \markboth o \chaptermark.

      Avevo pensato a una soluzione di questo tipo:
      `\let\old@schapter=\@schapter
      \def\@schapter#1{\old@schapter{#1}\chaptermark{#1}}
      `
      e funziona correttamente, ma non mi piace che l’argomento venga letto e reimmesso nel flusso di lettura. Qualcosa del tipo:
      `\apptocmd\@schapter{\chaptermark{#1}}`
      invece non funziona e non capisco perché: non ci sono argomenti opzionali o robe simili. 😕

      Il fatto che @schapter sia definito usando newcommand con l’asterisco può centrare qualcosa?
      `\newcommand*{\@schapter}[1]{…}`
      Uso arsclassica, in caso importasse, con scrbook (e minitoc). Se può servire ci metto un esempio minimo.

      Tra l’altro, tutte le volte in cui questo problema è stato posto sul forum, è stata sempre suggerita la soluzione manuale (\markboth per intenderci) e mai di automatizzarlo aggiungendo qualcosa nel preambolo. Ci sono motivazioni per questo? Qualche motivo per cui sarebbe bene evitarlo? (A parte le idiosincrazie di qualcuno per i capitoli non numerati…:))

      L’arciere centra, se è bravo; \newcommand* forse c’entra. 🙂 Non c’entra, però. Prova con
      `\renewcommand{\ChapS}[1]{\chaptermark{#1}\oldchap*{#1}}`
      Ciao
      Enrico

    • #65477
      Up
      0
      Down
      ::

      egreg9″ post=64546L’arciere centra, se è bravo; \newcommand* forse c’entra. 🙂

      Oddio! Comincio a non vederci bene!

      Non c’entra, però. Prova con
      `\renewcommand{\ChapS}[1]{\chaptermark{#1}\oldchap*{#1}}`
      Ciao
      Enrico

      Questo funziona, grazie!

      Nel frattempo ho cercato di capire meglio il problema e mi sono reso conto che la causa era minitoc, che ridefiniva \@schapter. La soluzione che ho trovato:
      `\apptocmd\mtc@schapter{\chaptermark{#1}}`

      Qual è la più generale? In altri termini: Dov’è definito \ChapS?

      Un po’ fuori argomento, non capisco perché minitoc mette due \def in fila così:
      `\let\mtc@schapter\@schapter
      \def\@schapter{\addtocontents{toc}{\protect\chapterend}\mtc@schapter}
      \def\@schapter{\addtocontents{@@@}{\protect\chapterbegin}\mtc@schapter}
      `
      Che senso ha?

      Ciao e grazie,
      A.

    • #65478
      Up
      0
      Down
      ::


      Eh! La mia però non sembra compatibile con \titleformat (il comando di titlesec).

      Vada per la tua, chiaramente! 🙂

    • #65479
      Up
      0
      Down
      ::

      antonio.macrì” post=64547Nel frattempo ho cercato di capire meglio il problema e mi sono reso conto che la causa era minitoc, che ridefiniva \@schapter. La soluzione che ho trovato:
      `\apptocmd\mtc@schapter{\chaptermark{#1}}`

      Qual è la più generale? In altri termini: Dov’è definito \ChapS?

      ClassicThesis fa un lavoraccio sui capitoli, per vari motivi, e aggiunge un paio di strati sopra la definizione usuale. Alla fine \chapter è definito come
      `\newcommand{\chapter}{\secdef{\Chap}{\ChapS}}`
      dove \secdef è una macro generica per queste faccende: se c’è * si sceglie \ChapS, se non c’è si sceglie \Chap, ma è compresa la gestione dell’eventuale argomento opzionale. Naturalmente \ChapS è definita in ClassicThesis.

      antonio.macrì” post=64547Un po’ fuori argomento, non capisco perché minitoc mette due \def in fila così:
      `\let\mtc@schapter\@schapter
      \def\@schapter{\addtocontents{toc}{\protect\chapterend}\mtc@schapter}
      \def\@schapter{\addtocontents{@@@}{\protect\chapterbegin}\mtc@schapter}
      `
      Che senso ha?

      Nessuno. Come molte cose di minitoc. Il suo autore ha impiegato molto più tempo a riempire la guida e il pacchetto di roba del tutto inutile che a scriverlo decentemente.

      Ciao
      Enrico

Visualizzazione 3 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top