Problema con itemize e theorem

  • Creatore
    Topic
  • #117065
    Niccolò Cavallini
    Partecipante
      Up
      0
      Down
      ::


      Buonasera,
      vi sottopongo un problema che mi sembra tanto strano quanto irrisolvibile in LaTeX, conosciuto per la sua altissima resa tipografica.
      Varie volte in un documento (classe article) uso degli elenchi puntati (itemize) con un simbolo personalizzato, ad es.
      `\begin{itemize}
      \item[(i)] Primo elemento
      \item[(ii)] Secondo elemento

      \end{itemize}
      `
      e, una volta, in un ambiente theorem accade che i simboli siano sovrapposti l’un l’altro (vedi immagine).
      In tutti gli altri ambienti theorem, questo non accade.
      Sapreste darmi una spiegazione?
      Questo è il preambolo e il codice incriminato.
      `PREAMBOLO E PARTE INIZIALE
      \documentclass[12pt,a4paper,twoside,titlepage]{article}
      \usepackage[italian,german]{babel}
      \usepackage{fouriernc}
      \usepackage{textcomp}
      \usepackage{xpatch,amsmath,systeme,mathtools}
      \let\xleftrightarrow\undefined
      \xpatchcmd{\@theorem}{\fontseries\mddefault\upshape}{}{}{} % same font as thm-header
      \xpatchcmd{\@def}{\fontseries\mddefault\upshape}{}{}{} % same font as thm-header

      \makeatletter
      \newcommand\xleftrightarrow[2][]{%
      \ext@arrow 9999{\longleftrightarrowfill@}{#1}{#2}}
      \newcommand\longleftrightarrowfill@{%
      \arrowfill@\leftarrow\relbar\rightarrow}
      \makeatother

      \newcommand{\sol}[1]{\mathbb{#1}}
      \newcommand{\GLnR}{\mathrm{GL}_n (\mathbb{R})}
      \newcommand{\MnR}{\mathcal{M}_n (\mathbb{R})}
      \newcommand{\opel}[4]{\xrightarrow{\text{#1}{#2}{#3}\text{#4}}}
      \newcommand{\ass}[1]{\left| #1 \right|}
      \newcommand*\es[1]{\tikz[baseline=(char.base)]{
      \node[shape=circle,draw,inner sep=4pt,fill=blue!15] (char) {#1};}}

      \newcommand*\ess[1]{\tikz[baseline=(char.base)]{
      \node[shape=circle,draw,inner sep=4pt,fill=green!15] (char) {#1};}}

      \newcommand*\est[1]{\tikz[baseline=(char.base)]{
      \node[shape=circle,draw,inner sep=4pt,fill=red!15] (char) {#1};}}

      %\newcommand{\ss}{ß}

      \usepackage{amsfonts}

      \DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
      \DeclareMathAlphabet{\mathbb}{U}{msb}{m}{n}
      \DeclareMathOperator{\spn}{Span} %definisco operatore span con \spn per la parte generatrice di una fam. di vettori.
      \DeclareMathOperator{\tr}{tr} % definisco operatore tr con \tr per la traccia di una matrice.
      \DeclareMathOperator{\rg}{rang} %definisco operatore rang con \rg per il rango di una matrice.

      \usepackage{amssymb}
      \let\openbox\relax
      \usepackage{amsthm, thmtools}
      \usepackage{makeidx}
      \usepackage{graphicx}
      \usepackage{mdframed}
      \usepackage{float}
      \usepackage{ulsy}
      \usepackage[T1]{fontenc}
      \usepackage{wasysym}
      \usepackage{tikz}
      \usetikzlibrary{decorations.pathreplacing,calc,matrix}
      \usepackage{pdfpages}
      \usepackage{eso-pic}
      \usepackage{hyperref}
      \hypersetup{
      colorlinks=false, %set true if you want colored links
      linktoc=all, %set to all if you want both sections and subsections linked
      }
      \usepackage{sectsty}
      \usepackage{fancyhdr}
      \usepackage{nicematrix}
      \usepackage{subfloat}
      \usepackage{aligned-overset}

      \sectionfont{\Huge}

      \author{Niccolò Cavallini}
      \title{Elementi di Algebra lineare}
      \date{}

      \textwidth16cm
      \textheight23cm
      \topmargin0mm
      \headheight15mm
      \headsep10mm
      \oddsidemargin0mm
      \evensidemargin0mm
      \parindent0mm

      % DIMOSTRAZIONE – STRUTTURA
      % fbox{
      % \parbox{0.97\textwidth}{
      % \begin{center}
      % DIMOSTRAZIONE PER #1
      % \end{center}
      % #2 \ \ \ \ $\blacksquare$
      % }
      %}
      %dove #1 è il METODO e #2 è il TESTO della dim.

      \renewcommand{\emptyset} {\varnothing}
      \newcommand {\vecl}{\overrightarrow}

      \begin{document}

      \selectlanguage{italian}
      \newcommand{\comment}[1]{}
      \newmdtheoremenv{theorem}{Teorema}[section]
      \newtheorem*{theorem*}{Teorema} %Teorema non numerato e non indicizzato
      \newtheorem{corollary}{Corollario}[theorem]
      \theoremstyle{definition}
      \newtheorem{definition} {Definizione}[section]
      \newtheorem*{definition*}{Definizione} %Def. non numerata e non indicizzata
      \newtheorem{lemma}{Lemma}
      \newtheorem{cor}{Corollario}
      \includepdf[pages=-, pagecommand={\thispagestyle{empty}}]{copertina/copertina_def.pdf}

      \newpage
      \thispagestyle{empty}
      \selectlanguage{italian}
      \newpage
      \thispagestyle{empty}
      \phantom{a}

      \fancypagestyle{pdf}
      \fancyhead{} % cancella tutti i campi
      \fancyhead[RO,LE]{}
      \fancyhead[LO,RE]{}
      \fancyfoot[LE,RO]{\thepage}
      \fancyfoot[CO,CE]{\sectionmark}

      \pagestyle{fancy}
      %\fancyhead{} % cancella tutti i campi
      \fancyhead[RO,LE]{\textit{Elementi di Algebra lineare}}
      \fancyhead[LO,RE]{\textit{Niccolò Cavallini}}
      \fancyfoot[LE,RO]{\thepage}
      \fancyfoot[LO,CE]{}
      \fancyfoot[CO,RE]{}

      \renewcommand{\headrulewidth}{0pt}
      \renewcommand{\footrulewidth}{0pt}`

      `CODICE 'INCRIMINATO'
      \begin{theorem}[sulle funzioni con dominio (finito) uguale al codominio] {\phantom{A}\\}
      Ist $X$ eine \textbf{endliche} Menge, so sind für eine Abbildung $f: X \rightarrow X$ folgende Bedingungen äquivalent.

      \begin{enumerate}
      \item[(i)]$f$ ist injektiv
      \item[(ii)]$f$ ist surjektiv
      \item[(iii)]$f$ ist bijektiv
      \end{enumerate}
      \end{theorem}
      `

      IMMAGINE DEL PROBLEMA

      [attachment=2362]theorem_itemize.JPG[/attachment]

      Attachments:
      You must be logged in to view attached files.
    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #117066
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Veramente nell’immagine, vedo solo che il primo “bullet” dell’elencazione semplice non appara, più che essere sovrapposto.
          Tuttavia mi pare che tu stia usando itemize in modo improprio. Vedi PostSciptum
          Mi spiego meglio; se tu numeri con numeri romani minuscoli corsivi fra parentesi tonde, non stai componendo una lencazazione semplice, ma una enumerazione. Le due cose nella letteratura tecnico scientifica sono due cose distinte anche grammaticalmente; Cerca qui nella sezione ArsTeXnica, quel fascicolo di una prile di tre o quattro annni fa che contiene la traduzione di un articolo scritto da un professionista della scrittura tecnico-scientifica. Gli elenchi puntati, quelli che si fanno con itemize, fanno parte del discorso del periodo che precede l’elencazion quindi non hanno mai l’inio con la lettera maiuscole e nessun item termina col punto fermo, se non l’ultimo e se e solo se il periodo che precede l’elenco prosegue dopo l’elenco; l’enumerazione, cioè quella che si compone con eneumerate, invece non fa parte dell’enunciato che la precede e e nemmeno dell’enunciato che la segue; tutti gli item cominciano con la maiuscola e terminano col punto fermo.

          Inoltre i numeri romani minuscoli sono orrendi, e non hanno nulla a che vedere con gli antichi romani che erano gli inventori della loro numerazione; personalmente uso i numeri romani, ma solo maiuscoletti. In ogni caso le parentesi che racchiudono del testo in corsivo devono essere diritte e non oblique come il corsivo. Non ti sto raccontando delle mie manie tipografiche, ti sto riferendo quanto ho studiato e ho appreso dai professionisti; è vero che nessuna regola tipografica è un dogma di fede, e sapendo quello che si fa, la si può anche violare, tuttavia…

          Venendo dunque al punto, usa enumerate; configura il richiamo numerico come ti pare, ma fallo usando le personalizzazioni mediante le funzionalità del pacchetto enumitem; siccome il pacchetto fa un mucchio di cose, è necessario leggere con attenzione la documentazione del pacchetto (apri un terminale, dài ed esegui il comando texdoc enumitem e leggi). Le opzioni per cambiare il modo di scrivere il numero sono tutte da appendere al comando di apertura, quindi non devi mettere nessun argomento opzionale dopo \item; è anche comodo per semplificare l’input del corpo dell’enumerazione; se poi devi cambiare lo stile, devi cambiare solo l’opzione e non cambiare tutto quello che fanno i numerosi \item.

          [PS] Ho riguardato meglio il tuo lungo preambolo e il codice dell’esempio incriminato, dove usi enumerate, ma nel testo del tuo messaggio parli di elenchi puntati; quindi, colpa mia che sono stato frettoloso, e ho scritto cose relative a itemize che sono valide,ma fuori luogo. Valgono tutte le raccomandazioni, in particolare di usare il pacchetto enumitem.

        • #117067
          mcl1962
          Partecipante
            Up
            0
            Down
            ::


            Se togli \phantom{a} dove appare, tutto funziona come desiderato.

            Ciao.

            Claudio

          • #117068
            Up
            0
            Down
            ::


            Quale sarebbe la funzione di [tt]{\phantom{A}\\}[/tt]? Bisogna, per prima cosa, togliere il saluto a chi ha consigliato questa nefandezza. 🙂

            Se si desidera andare a nuova riga dopo l’intestazione dell’enunciato (ma non capisco perché), il modo corretto è, molto più semplicemente

            `\begin{theorem}[sulle funzioni con dominio (finito) uguale al codominio] \mbox{}\\`

            Ciao
            Enrico

          • #117069
            Niccolò Cavallini
            Partecipante
              Up
              0
              Down
              ::


              Buonasera a tutti e grazie per le risposte.
              Come suggerito da OldClaudio, tenterò di utilizzare enumitem.
              Per quanto riguarda l’uso di `{\phantom{A}\\}` era una tecnica che mi ero inventato io, sapendo benissimo che probabilmente esiste modo migliore per farlo, per andare a capo dopo l’intestazione del teorema.
              Per quanto riguarda i numeri romani minuscoli e le parentesi corsive, uso i romani minuscoli perché i maiuscoli sono già ‘occupati’ per un altro uso; inoltre vedo che molti libri di testo li usano e pensavo quindi di far del bene. Le parentesi corsive le uso solo nell’ambiente theorem che impone il carattere corsivo (in realtà potrei cambiarlo, ma il tondo lo uso già per lemmi, definizioni e corollari; era solo per enfatizzare il teorema).
              Accolgo a piene mani i preziosi suggerimenti e vi farò sapere in merito a enumitem, anche per altri futuri utenti.
              Saluti.
              NC

            • #117070
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Cero i maiuscoli sono già impegnati, ma i maiuscoletti no.
                Il fatto che molti usino le lettere minuscole non vuol dire che si possano usare sempre; le i senza puntino sono state inventate verso la fine del XVII secolo. nel XṾI si usava la i senza puntino e forse era accettabile. ma cosa ne dici di questo numero romano mdli (a fronte di MDLI) quando la M dei romani era in verità scritta anche come una specia di segno di infinito (l’ho visto nelle tavole eugubine, esposte nel museo del Palazzo dei Consoli a Gubbio,dove ci sono in parallelo degli scritti latini ed etruschi). Comunque il mio è un consiglio, non è un ordine.
                In un testo tutto corsivo in inciso in corsivo ci sta con le parentesi corsive; Nell’etichetta di una enumerazione, che comunque non mettere in corsivo, non siamo nel mezzo del testo,ma stiamo scrivendo un’etichetta per identificare un enunciato; l’etichetta non fa parte del testo.
                Il giudizio negativo di egreg9 in merito a \phantom è importante; cerca di capire perché quel comando non funziona e fa sparire la prima etichetta. Riguarda, fra l’altro il modo verticale e quello orizzontale e anche quello matematico. Vai a vederne la definizione nel file latex.ltx.

                Incidentalmente; il tuo preambolo contiene la chiamata a molti pacchetti e contiene molte abbreviazioni di comandi e alcune di ambienti. Spero che tu abbia verificato di aver caricato solo i pcchetti che ti servono e di non aver dulicato le chiamate esplicite o implicite. Per esempio se tu avessi raccolto le chiamate in gruppi più o meno omogenei avresti notato di aver chiamato sia amsfonts sia amssymb. Siccome amssymb chiama amsfonts, la chiamata esplicita di questo pacchetto è superflua. Non ho verificato tutto, ma siccome parto dal presupposto che tu abbia caricato tutto a ragion veduta, ti pregherei, per la tua comodità, di raccogliere le chiamate in gruppi omogenei; metti tutte le definizioni e più ancora le ridefinizioni in fondo al preambolo, prima di \begin{document}. Ti aiuterà moltissimo in futuro se prederai questa buona abitudine. Inoltre fai atttenzione quando ridefinisci gli ambienti; per esempio se ridefinissi l’ambiente environment (nome a caso) e lo chiamassi solo con il comando \benv, e corrispondentemente chiamassi la sua chiusura \Eenv, avresti la comodità di usare comandi più semplicim ma ancora con una certa dose di mnemonicità. Tuttavia se l’ambiente environment facesse certe cose che dipendono dalla presenza esplicita di \end{environment} il tuo ambiente non potrebbe più funzionare. Ho fatto solo un esempio, solo per metterti in guardia per quando ridefinisci gli ambienti e/o sostituisci i comandi di apertura e di chiusura con macro più corte da scrivere. Fra gli environment ch cercno la riga esplicita di fine, c’è sicuramente l’ambiente verbatim; non lo stai usando, ma te lo dico solo perché come quello ce ne potrebbero essere altri, e se non ne studi dettagliatamente la definizione originale puoi combinare pasticci strani. Piuttosto metti quasi tutto il tuo lungo preambolo in un tuo file .sty e(per esempio, MyStyle.sty) e caricalo con \usepackage{MyStyle}; il preambolo del tuo documento rimane più pulito e semplice da tenere in ordine; Il pacchetto .sty ha la prerogativa che puoi usare @ come se fosse una lettera dell’alfabeto e quindi non hai bisognodi usare \makeatletter e \makeatother; infatti tu ridefinisci neltuo attuale preambolo una macro il cui contenuto contiene @ e lo fai prima di aver dichiarato \makeatletter; quindi se usi quella nuova macro, al momneto di usarla ottieni messaggi d’errore che non riesci a decifrare, perché palano di un fantomatico space factor che tu non ti sei mai sognato di impostare.

                Scusa la lunghezza del messaggio; ma visto che non sei un Newbie, ma n TeXuser con una certa esperienza, devi diventare un poco più esperto con le tue definizioni e ridefinizioni.

              • #117071
                claudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Guardando il tuo preambolo mi viene un dubbio ma hai considerato le dipendenze?
                  solo per la matematica hai praticamente citato tutti i pacchetti di CTAN 🙂
                  Scusa se mi permetto ma ti conviene fermati un attimo e riordinare il preambolo
                  ciao
                  claudio

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

              Go to top