option clash for package xcolor

  • Creatore
    Topic
  • #121814
    Up
    0
    Down
    ::


    Ciao a tutti,

    1) il seguente mwe mi da’ errore (vedi titolo del topic).
    2) Da quello che ho capito, si tratta della opzione x11names.

    Domande:
    a) Da dove viene l’errore?
    b) Come evitarlo?

    Saluti
    Luciano

    `
    \documentclass{beamer}
    \usepackage[x11names]{xcolor}
    \usepackage{efbox}
    \begin{document}
    hello
    \end{document}
    `

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #121815
      MatteoF
      Partecipante
        Up
        0
        Down
        ::


        Se carichi l’opzione [tt]x11names[/tt] tramite il comando [tt]\PassOptionsToPackage[/tt] l’esecuzione va a buon fine `
        \PassOptionsToPackage{x11names}{xcolor}
        \documentclass{beamer}
        \usepackage{xcolor} % superfluo, perché già caricato dalla classe

        \begin{document}
        hello
        \end{document}`Matteo

      • #121816
        Up
        0
        Down
        ::


        Ciao a tutti,

        1) grazie Matteo, devo ancora provarlo ma mi piace.
        2) Da dove viene questo comando che non ho mai incontrato prima?

        Saluti
        Luciano

      • #121817
        MatteoF
        Partecipante
          Up
          0
          Down
          ::


          Il comando fa parte del nucleo di LaTeX e viene utilizzato nella creazione di pacchetti e classi per caricare le opzioni di altri pacchetti.

          Ma perché sei incappato in quell’errore? Cercherò di spiegarlo in base alla mia esperienza pratica, senza addentrarmi in aspetti teorici che ignoro…

          In via di principio è possibile caricare lo stesso pacchetto più volte, ma le opzioni devono essere esplicitate alla prima occorrenza. Dunque, nel preambolo, è possibile inserire `
          \usepackage[x11names]{xcolor}
          \usepackage{xcolor}` ma non `
          \usepackage{xcolor}
          \usepackage[x11names]{xcolor}` altrimenti si incappa nell’errore `! LaTeX Error: Option clash for package xcolor`
          Poiché la classe [tt]beamer[/tt] carica internamente il pacchetto [tt]xcolor[/tt], ricaricare una seconda volta lo stesso pacchetto assieme all’opzione (dunque in modalità Load-time Option) genera il medesimo errore. Per ovviare a ciò é possibile utilizzare il comando [tt]\PassOptionsToPackage[/tt] in modo da “indicare” le opzioni prima del caricamento del pacchetto. `
          \PassOptionsToPackage{x11names}{xcolor}
          \documentclass{beamer}

          \begin{document}
          \textcolor{Gold4}{hello}
          \end{document}
          `
          Infine, poiché [tt]x11names[/tt] è un’opzione specifica di [tt]xcolor[/tt] (cioè non è definita in altri pacchetti) è anche possibile “passare” l’opzione a livello globale (cioè a livello di classe) senza conseguenze particolari. In questo caso il preambolo si ridurrebbe a`\documentclass[x11names]{beamer}`Scritto così, però, sembrerebbe che [tt]x11names[/tt] sia un’opzione propria della classe e non di un pacchetto caricato internamente alla classe. Per questo motivo, potrebbe essere preferibile utilizzare il comando [tt]\PassOptionsToPackage[/tt]: da un punto di vista pratico non cambia nulla, ma forse migliora la leggibilità del codice (imho).

          Matteo

        • #121818
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Matteo la tua spegazione e perfetta; aggiungeri questa cos: il codice`\DeclareOptionBeamer{xcolor}{\PassOptionsToPackage{#1}{xcolor}}` si trova dentro al classe beamer, piò o meno verso la riga 266; la si trova aprendo beamer.cls con lo stesso editor con il quale si compongono i file sorgente dei nostri documenti Come vedi le opziooni che vengono capite da \xcolor, vengono tramessse direttamente dalla classe al pacchetto.

            Questo succede con tutte le classi, nel senso che i file di casse non controllano se l’opzione è per lei stessa, o è par altri, vuol dire che si tratta di on’opzione non e accettata da nessuno, vie emesso un worning nel file .log dove si dice che la tal opzione non è stata usata.

            Mettere PassOptionToPackage prima della riga che seglie la classe è consentito, ma non mi sembra intuitivo, visto che dappertutto si scre=ive che prima di \documentclass non ci deve essere niente. Anche il pacchetto filecontents “anticamente” andava messo prima di i \documentclass, ma da alcuni anni va messo dopo ed ha diverse utili opzioni che non erano diponibili col vecchio filecontents.

            Luciano, apri la documentazione di beamer a nella pagina 18 descrive come passare opzioni a xcolor.

          • #121819
            Up
            0
            Down
            ::


            Ciao a tutti,

            1) grazie Claudio.
            2) La soluzione con \PassOptionsToPackage funziona bene, grazie.
            3) Per me il topic e’ chiuso.
            4) Io imparo molto e scrivo molto sui miei quaderni.
            5) Quando mi dicono che TeX e’
            molto difficile mi trovo in difficolta’ su cosa rispondere !
            6) Secondo me, a naso, per ogni utente che arriva su questo forum
            con il suo carico di dolore, ne perdiamo una ventina per strada che usano,
            per scrivere al computer, soluzioni alternative (orrore!)

            Saluti
            Luciano

          • #121820
            Up
            0
            Down
            ::


            Pagina 18 del manuale di beamer, che fa parte della descrizione dei pacchetti caricati automaticamente da beamer.

            Se si deve passare un’opzione non prevista dalla classe a uno di questi pacchetti, c’è l’apposito meccanismo:

            `
            \documentclass[xcolor=x11names]{beamer}

            \begin{document}

            \begin{frame}

            \textcolor{Burlywood1}{hello} % mostriamo che il colore definito in x11nam.def è compreso

            \end{frame}

            \end{document}
            `

          • #121821
            Up
            0
            Down
            ::


            Ciao a tutti,

            1) grazie a egreg (Enrico?)
            2) ottimo questo forum!

            Saluti
            Luciano

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

        Go to top