Ordine caricamento pacchetti

  • Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 16 anni fa da Daniele.
  • Creatore
    Topic
  • #48934
    Up
    0
    Down
    ::


    Ciao a tutti,
    dopo un paio di mesi ho cercato di ricompilare un documento su cui stò lavorando. Nel frattempo ho aggiornato Miktex. Ora ottengo un errore che prima non avevo. Dopo diverse prove sono riuscito a capire che si presenta nel momento in cui le seguenti due righe
    `\usepackage{scrtime}
    \usepackage[draft,time,italian]{prelim2e}`
    vengono caricate dopo
    `\usepackage[sl]{capiton}`
    Come mai? La soluzione stà semplicemente nello scambiare l’ordine di caricamento dei pacchetti?
    Più in generale: come sapere qual’è l’ordine ottimale di caricamento?

    Grazie,
    Daniele

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #48935
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        Ciao a tutti,
        dopo un paio di mesi ho cercato di ricompilare un documento su cui stò lavorando. Nel frattempo ho aggiornato Miktex. Ora ottengo un errore che prima non avevo. Dopo diverse prove sono riuscito a capire che si presenta nel momento in cui le seguenti due righe
        `\usepackage{scrtime}
        \usepackage[draft,time,italian]{prelim2e}`
        vengono caricate dopo
        `\usepackage[sl]{capiton}`
        Come mai? La soluzione stà semplicemente nello scambiare l’ordine di caricamento dei pacchetti?
        Più in generale: come sapere qual’è l’ordine ottimale di caricamento?

        Grazie,
        Daniele

        Bella domanda…
        L’ordine di caricamento non dovrebbe essere significativo, tranne in alcuni casi come con il pacchetto hyperref che deve essere l’ultimo.

        Tu non riporti l’errore che ottieni. Immagino tuttavia, che sia dovuto al caricamento di pacchetti con opzioni: infatti se un pacchetto viene caricato dietro le quinte da un secondo, caricarlo esplicitamente nel sorgente con opzioni non è consentito da LaTeX.
        Pertanto può capitare che la situazione di option clash possa essere risolta caricando i pacchetti in ordine diverso.
        Altra soluzione è caricarli senza opzioni e poi utilizzare i comandi appositi del pacchetto per impostare parametri.
        Ciao

      • #48936
        Up
        0
        Down
        ::

        Ciao a tutti,
        dopo un paio di mesi ho cercato di ricompilare un documento su cui stò lavorando. Nel frattempo ho aggiornato Miktex. Ora ottengo un errore che prima non avevo. Dopo diverse prove sono riuscito a capire che si presenta nel momento in cui le seguenti due righe
        `\usepackage{scrtime}
        \usepackage[draft,time,italian]{prelim2e}`
        vengono caricate dopo
        `\usepackage[sl]{capiton}`
        Come mai? La soluzione stà semplicemente nello scambiare l’ordine di caricamento dei pacchetti?
        Più in generale: come sapere qual’è l’ordine ottimale di caricamento?

        Il problema sta nel pacchetto scrtime, più precisamente in scrbase.sty, dove Markus Kohm, nella sua immensa saggezza, definisce \l@addto@macro con \newcommand e non con \providecommand, come più sagacemente fa caption3.sty. Di fatto le due definizioni sono equivalenti. Si tratta di una macro di uso interno modellata sulla macro \g@addto@macro del nucleo di LaTeX, che però agisce solo localmente.

        Purtroppo non ci si può fare molto se non segnalare il problema agli autori dei pacchetti. In genere cerco di non usare pacchetti di Kohm, per motivi filosofici. 🙂

        Puoi evitare di caricare scrtime dando la seguente definizione:
        `\newcommand{\thistime}{\expandafter\calctimeA\pdfcreationdate@}
        \def\calctimeA#1:#2#3#4#5#6#7#8#9{\calctimeB}
        \def\calctimeB#1#2#3#4#5@{#1#2:#3#4}`
        Ciao
        Enrico

      • #48937
        Up
        0
        Down
        ::


        Ciao Enrico,
        ho provato il codice che mi hai passato, ma ottengo il seguente errore:

        ! Undefined control sequence.
        \thistime …ndafter \calctimeA \pdfcreationdate@

        L’ho inserito così nel preambolo:
        `\newcommand{\thistime}{\expandafter\calctimeA\pdfcreationdate@}
        \def\calctimeA#1:#2#3#4#5#6#7#8#9{\calctimeB}
        \def\calctimeB#1#2#3#4#5@{#1#2:#3#4}
        \usepackage[draft,time,italian]{prelim2e}`

        Inolte, sarei curioso di approfondire cosa intendi con

        In genere cerco di non usare pacchetti di Kohm, per motivi filosofici. 🙂

        Ciao,
        Daniele

      • #48938
        Up
        0
        Down
        ::

        Ciao Enrico,
        ho provato il codice che mi hai passato, ma ottengo il seguente errore:

        ! Undefined control sequence.
        \thistime …ndafter \calctimeA \pdfcreationdate@

        L’ho inserito così nel preambolo:
        `\newcommand{\thistime}{\expandafter\calctimeA\pdfcreationdate@}
        \def\calctimeA#1:#2#3#4#5#6#7#8#9{\calctimeB}
        \def\calctimeB#1#2#3#4#5@{#1#2:#3#4}
        \usepackage[draft,time,italian]{prelim2e}`

        Stai forse usando XeLaTeX? Se no, hai una distribuzione TeX molto antiquata. Oppure hai messo quel codice tra \makeatletter e \makeatother, cosa che non era suggerita, se leggi il messaggio con attenzione. 🙂 Se per caso hai messo il codice in un file .sty, sostituisci le due occorrenze di @ con \@nil

        Inolte, sarei curioso di approfondire cosa intendi con

        In genere cerco di non usare pacchetti di Kohm, per motivi filosofici. 🙂

        Markus Kohm si distingue nel mondo LaTeX per vari motivi, che per me sono sufficienti a evitarlo per quanto possibile. Per esempio, fornire una documentazione inadeguata ai suoi pacchetti, che hanno licenza LPPL, preferendo vendere la documentazione aggiornata.

        Ciao
        Enrico

      • #48939
        Up
        0
        Down
        ::


        Grazie Enrico,
        il problema stava proprio nel fatto che il codice era in un file .sty. Ho corretto come suggerito e… funziona!!!

        Per quanto riguarda il tuo commento sui pacchetti di Markus Kohm concordo pienamente. Non ero a conoscenza di questo suo approccio. Purtroppo però è molto facile imbattersi nel suo materiale. Lo stesso pacchetto classicthesis fa uso di una sua classe. Perchè gli sviluppatori non hanno preferito appoggiarsi a qualcosa che non cerchi di speculare su LaTeX?

        Ciao,
        Daniele

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

    Go to top