Ancora sorting di Imakeidx (solo per stomaci forti!)

  • Creatore
    Topic
  • #91042
    Up
    0
    Down
    ::


    Allora, questo è un problema allucinante: per capire il caso in cui si verifica ho impiegato un sacco di tempo e non so neanche se riesco a descriverlo (ma dall’esempio è chiaro).
    In pratica sembra che in caso di sub-sub-entries in paragrafi multipli di Eledmac (solo in presenza della entry comune contemporaneamente in paragrafi diversi!) queste non finiscano in ordine alfabetico.
    Cosa fare??

    Nell’esempio che allego abbiamo la entry principale (Amelia/Ameria/Terni), la sub-entry “contrata” e diverse sub-sub-entries. Queste ultime vanno in panico di sorting ma SOLO se l’entry principale (Amelia) è presente nei paragrafi di Eledmac in cui compaiono anche le sub-sub-entries.
    È una roba bestiale, aiuto!!!!
    😮 😮 😮

    `\begin{filecontents}{archivio.bib}

    @book{Biz:Doc,
    Address = {Torino},
    Author = {Dina Bizzarri},
    Date-Added = {2013-07-31 14:34:36 +0200},
    Date-Modified = {2013-11-02 14:54:58 +0100},
    Number = {17},
    Publisher = {Istituto giuridico della Regia Universit{\`a}},
    Series = {Memorie dell'Istituto giuridico, Universit{\`a} di Torino, Serie 2},
    Title = {Il documento notarile guarentigiato, genesi storica e natura giuridica},
    Year = {1932}}

    \end{filecontents}

    %%%%%%%%%%%%%%%%%%%%%%%%%%% PREAMBOLO %%%%%%%%%%%%%%%%%%%%%%%%%%%
    \documentclass[a4paper]{report}
    \usepackage[a4paper,left=2.0cm,right=2.5cm,bindingoffset=18mm, top=2.5cm, includeheadfoot, heightrounded, bottom=2.5cm, footnotesep=0.5cm ]{geometry}
    \usepackage{comment}
    \usepackage{setspace} % Per gestire più facilmente l'interlinea
    \usepackage{fancyhdr}
    \usepackage{verbatim} % Per citazioni verbatim con caratteri speciali
    \usepackage{polyglossia} % Per le sillabazioni
    \setmainlanguage{italian}
    \setotherlanguage{latin}

    \usepackage{textcomp} % Per ottenere segni strani come la parentesi angolata larga
    \usepackage{fontspec} % Per caricare correttamente i font Garamond

    %%%%%%%%%%%%%%%%PACCHETTI E COMANDI DI NOTAZIONE%%%%%%%%%%%%%%%%%%%%%
    \usepackage{eledmac}
    \usepackage{perpage} % Per azzerare il counter delle note con lettera a ogni pagina
    \usepackage{alphalph} % Per poter andare oltre la “z” nelle note con lettera
    \MakePerPage{footnoteA} % azzera il contatore delle footnoteA (cioè le cri)
    \MakePerPage{footnoteB} % azzera il contatore delle footnoteB (cioè le com)

    \interparanoteglue{0.3cm plus .4em minus .4em} % Spazio tra una rif. e l'altra (in orizzontale)
    \addtolength{\skip\footinsA}{0.2cm} % Aggiunge spazio tra le note
    \addtolength{\skip\footinsB}{0.2cm}

    \newskip\prefootskip % the big initial skip
    \prefootskip=3.3em plus .6em minus .6em

    \setcounter{firstlinenum}{0} % Numera ogni linea a partire dalla zero
    \setcounter{linenumincrement}{10000} % Incrementa ogni 10.000 righe (per non stampare i numeri linea)

    \renewcommand{\thefootnoteA}{\alphalph{\value{footnoteA}}} % Mette note a piè di pagina contrassegnate da lettera, che va oltre la z (alphalph)
    \footparagraphX{A} % Note cri di seguito
    \foottwocolX{B} % Note com su due colonne

    \renewcommand*{\notefontsetup}{\normalsize} %%specifica la dimensione dei font per le note di 2a e 3a fascia
    \renewcommand*{\notenumfont}{\normalsize} %%specifica la dimensione dei font per i numeri di linea nelle note
    \newcommand{\notetextfont}{\normalsize}
    \renewcommand*{\numlabfont}{\normalfont\normalsize} %%specifica la dimensione dei font per i numeri di linea in margine
    \renewcommand*{\footnotesize}{\normalsize} % specifica la dimensione dei font per le footnote (1a fascia)

    \noendnotes %% no endnotes
    \setlength{\ledrsnotewidth}{4em} %% narrow sidenotes

    \newcounter{para} % Definisce un contatore che contenga i numeri dei capoversi
    \newcommand{\newpar}{\refstepcounter{para} % Queste due righe per numerare i capoversi
    \centerline{{\bfseries\Large\arabic{para}.\vspace*{2ex}}}}
    %{\parindent}\ignorespaces}

    \newcommand\NuovoPar{\pstart\newpar} %Definisco un nuovo comando con argomenti: \pstart e \newpar
    \newcommand\FinePar{\pend\vspace{4ex}} %Definisco un nuovo environment con argomenti: \pend e \vspace{4ex}

    %%%%%%%%%%%%%%%%%%%COMANDI DI BILIOGRAFIA%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \usepackage[style=philosophy-verbose, % Stile della bibliografia con citazioni estese, nome puntato
    scauthors=true, % Maiuscoletto Nome autore
    firstinits=true,
    language=italian,
    classical=true,
    useprefix=true,
    backend=biber, % Compilare l'aux con texworks e biber (NON bibtex!)
    publocformat=locpubyear,
    inbeforejournal=true, % Mette “in” prima del titolo della rivista
    latinemph=true]{biblatex}
    %Indexing (serve per fare gli indici dei nomi)
    \usepackage[autostyle=true]{csquotes} % Per citare in altre lingue
    \bibliography{archivio} % Specifica il nome del file di bibliografia

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INDICI%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \usepackage{imakeidx} % Creazione di indici multipli
    \usepackage[font=footnotesize]{idxlayout} % Customizza la grafica degli indici (es. in un solo paragrafo-> itemlayout=singlepar, –> RIMETTII!!!!!)
    \makeindex[title=Rogatari dei documenti, columns=1] % Genera l'indice di default.
    \makeindex[name=nomi,title=Nomi propri e di luogo, columns=1] % Genera altro indice

    \newbibmacro*{cite:authortitle}{%
    \usebibmacro{cite:citepages}%
    \global\togglefalse{cbx:fullcite}%
    \global\togglefalse{cbx:loccit}%
    \bibhypertarget{cite\the\value{instcount}}{%
    \iffieldundef{shorthand}
    {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
    {\usebibmacro{cite:idem}}
    {\usebibmacro{cite:name}}%
    \usebibmacro{cite:title:authortitle}%
    \usebibmacro{cite:save}}
    {\usebibmacro{cite:shorthand}}}}

    \newbibmacro*{cite:title:authortitle}{%OK
    \ifsingletitle{\usebibmacro{cite:opcit}}{%
    \printtext[bibhyperlink]{%
    \printfield[citetitle]{labeltitle}}}}

    \DeclareCiteCommand{\shortfootcite}[\mkbibfootnote]
    {\usebibmacro{prenote}}
    {\usebibmacro{citeindex}%
    \usebibmacro{cite:authortitle}}
    {\multicitedelim}
    {\usebibmacro{cite:postnote}}

    \DeclareCiteCommand{\shortcite}
    {\usebibmacro{prenote}}
    {\usebibmacro{citeindex}%
    \usebibmacro{cite:authortitle}}
    {\multicitedelim}
    {\usebibmacro{cite:postnote}}

    \makeatletter % Da qui in poi per customizzare l'indice: “vedi” diventa “v.” e si
    \let\orig@idxitem\@idxitem %eliminano i “v.” successivi al primo
    \def\@idxitem{\multipleseetrue\orig@idxitem}
    \makeatother
    \newif\ifmultiplesee
    \renewcommand{\see}[2]{%
    \ifmultiplesee\multipleseefalse\emph{v.\@} \fi#1}

    \DeclareFieldFormat
    [article,book,inbook,incollection,inproceedings,patent,thesis,unpublished]
    {title}{\mkbibemph{#1\isdot}} % titolo in enfatico, no caporale

    \DeclareFieldFormat
    [article,book,inbook,incollection,inproceedings,patent,thesis,unpublished]
    {citetitle}{\mkbibemph{#1\isdot}} % titolo in enfatico alla 2a citazione, no caporale
    %%%%%%Aggiornamenti di stile 7 nov 2013%%%%%%%%%%

    \DeclareFieldFormat{journaltitle}{\mkbibquote{#1}} % Titolo della rivista tra caporali
    \DeclareFieldFormat[book]{volume}{#1} % Elimina “vol.” prima del numero dei volumi:
    \renewbibmacro*{series+number}{% % Questa è la macro usata da @book per trattare le serie:
    \iffieldundef{series}{}{%
    \printtext[parens]{\printfield{series}%
    \setunit*{\addspace}%
    \printfield{number}}}%
    \newunit}

    % Il driver @book opportunamente ridefinito:
    \DeclareBibliographyDriver{book}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/editor+others/translator+others}%
    \setunit{\labelnamepunct}\newblock
    \usebibmacro{maintitle+title}%
    \newunit
    \iffieldundef{maintitle}
    {\printfield{volume}%
    \printfield{part}}
    {}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock
    \usebibmacro{byeditor+others}%
    \newunit\newblock
    \printfield{edition}%
    \newunit
    \printfield{volumes}%
    \newunit\newblock
    \printfield{note}%
    \newunit\newblock
    \usebibmacro{publisher+location+date}%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \newunit
    \printfield{pagetotal}%
    \newunit\newblock
    \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
    \newunit\newblock
    \usebibmacro{doi+eprint+url}%
    \newunit\newblock
    \usebibmacro{addendum+pubstate}%
    \setunit{\addsemicolon\space}\newblock
    \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
    \usebibmacro{related}}
    {}%
    \newunit\newblock
    \usebibmacro{pageref}%
    \newblock\nopunct%
    \usebibmacro{series+number}%
    \newunit\newblock
    \usebibmacro{finentry}}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \title{File di Prova}
    \author{}
    \date{}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%% INIZIO DOCUMENTO %%%%%%%%%%%%%%%%%%%%%%%%%%%
    \begin{document}
    \fontsize{12}{15} % Dimensione del Font e Interlinea in punti. (20=doppia)
    %\maketitle % Stampa il titolo
    %\tableofcontents % Stampa l'indice generale

    %%%%%%%%%%%%%%%TESTO DI PROVA%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \beginnumbering % Inizia a numerare le righe

    \textbf{Descrizione del problema}. Sembra che in caso di sub-sub-entries in paragrafi multipli di Eledmac (solo in presenza della entry comune contemporaneamente in paragrafi diversi!) queste non finiscano in ordine alfabetico. Cosa fare??

    \NuovoPar
    Ad esempio: Marclani\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Marclani}} e pure Burgi\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Burgi}}, \FinePar
    \clearpage

    \NuovoPar
    Ad Ameria\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}}
    Platee\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Platee}} e anche Montis Labri\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Montis Labri}} e anche Forpontis\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Forpontis}},
    \FinePar
    \clearpage

    \NuovoPar
    Burgi\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Burgi}},
    \FinePar
    \clearpage

    \NuovoPar
    Montis Labri\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Montis Labri}}
    \FinePar
    \clearpage

    \NuovoPar
    Ad Ameria\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}}
    Vallis\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Vallis}},
    \FinePar
    \clearpage

    \NuovoPar
    Platee\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Platee}}, e così via.\\
    \FinePar
    \clearpage

    \endnumbering
    Grazie!
    %%%%%%%%%%%%%%%%%%%%%%%%%BIBLIOGRAFIA%%%%%%%%%%%%%%%%%%%%%%%%
    \cleardoublepage
    \nocite{*}
    \addcontentsline{toc}{chapter}{\bibname} % aggiunge la voce Bibliografia all'Indice generale
    \addcontentsline{toc}{chapter}{\indexname} % aggiunge la voce Indice dei nomi all'Indice generale
    \printbibliography %compilare prima il file .aux con TexWorks (Biber)
    \printindex % Stampa l'Indice di default
    \printindex[nomi] % Stampa l'Indice dei nomi

    \end{document}
    \endinput
    `

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #91043
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Direi che il tuo esempio minimo, a parte alcune sviste, come la mancanza di \selectfont dopo l’iniziale comando \fontsize{12}{15}, possa fare quello che deve; però devi togliere [tt]\usepackage[font=footnotesize]{idxlayout}[/tt] che risulta un po\ incompatibile con le opzioni che hai dato ai due comandi \makeindex, fra le cui opzioni strebbe ebne anche intoc, per inseririe quegli indici nell’indice analitico, senza mettere nessun \addcontentsline perima dei due printindex.

        Quello che ti succede, però è che nella pagina 9 del tutorial leggibile con texdoc ind, è detto chiaramente che l’incapsulazione di see{entry} dpo il comando di incapsulazione |, non contiene il numero della pagina, quindi il comando \index che conteneesse una cosa del genere non potrebbe essere oridinato e quindi è del tutto irrilevante dove si trovi; se tu mettessi all’inzio del documento tutti quegli \index[nomi]{…contrata|see{…}} e non li ripetessi ogni volta che vuoi indiciizzare, cessò, Platee, sarebbe esattamente lo stesso; allora tutti questi ripetuti mackup di cose da indicizzare mettili una volta sola, e mettili nel file sorgente in ordine alfabetico, e vedrai che l’incie dei nomi ti viene bene. Con see also sembra che le cose siano diverse, perché cè il numero della pagina, del tipo contrata, 27, see Platee; anche in questo caso, però, mi aspetterei delle stranezze. Non l’ho provato, ma non sarebbe difficile da verificare.

        Devo dire che il tutorial da leggere con texdoc ind sia una buona integrazione della documentazione da leggere con texdoc makindex anche se vi vengono ripetute diverse cose con le stesse parole.

      • #91044
        Up
        0
        Down
        ::


        Ciao Claudio, grazie della risposta anche se ammetto che ho serie difficoltà a capirla bene e per intero.
        Mi sembra di intendere che il tutto si potrebbe riassumere in:

        OldClaudio” post=90594mettili nel file sorgente in ordine alfabetico, e vedrai che l’incie dei nomi ti viene bene

        Ora però mi\ti chiedo:

        1. Stiamo parlando di uno dei file degli indici?
        2. Se si: Ogni volta che ricompilo non esploderebbero tutte le modifiche apportate nel file?

      • #91045
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Vai nella pagina che ti ho suggerito e cerca di capire quello chi io potrei aver capito male.

          Quello che io ho capito è che un qualunque comando di indicizzazione che contenga una cosa del genere`
          \index parola|see{verbum}` va a finire nell’indice analitico al punto alfabeticamente corretto, ma l’incapsulazione |see{…} fa si che manchi il numero di pagina, quindi dovunque sia quel comando \index vene elencato nel corrispondente indice analitico, senza che sia operata nessuna operazione né di verifica di duplicazioni, e di ordinamento delle parti incapsulate.

          Di conseguenza puoi mettere i tuoi comandi`\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata|see{Platee}}` e gli altri suoi consimili subito dopo [tt]\beign{document}[/tt] che fa lo stesso; in particolare se li elenchi uno per riga e li ordini in ordine alfabetico tu stesso in quel suppongo breve inizio del tuo “document body”, ti verranno elencati nell’indice analitico sotto ad Amelia… e saranno elencati nell’ordine in cui xelatex li ha incontrati, cioè nell’ordine alfabetico che hai creato tu stesso.

          Certo è inusuale che sotto ad Amelia… ci siano tante contrate che vengono rinviate a tanti posti diversi. mah…

          Infatti ho provato con`
          %%%%%%%%%%%%%%%%%%%%%%%%%%%% INIZIO DOCUMENTO %%%%%%%%%%%%%%%%%%%%%%%%%%%
          \begin{document}
          \fontsize{12}{15}\selectfont % Dimensione del Font e Interlinea in punti. (20=doppia)
          %\maketitle % Stampa il titolo
          %\tableofcontents % Stampa l'indice generale

          %%%%%%%%%%%%%%%TESTO DI PROVA%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

          \index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata@contrata|see{Burgi}}\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata@contrata|see{Forpontis}}\index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata@contrata|see{Marclani}}
          \index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata@contrata|see{Montis Labri}}
          \index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata@contrata|see{Platee}}
          \index[nomi]{Amelia, Ameria, \textit{Amelia (Terni)}!contrata@contrata|see{Vallis}}

          \beginnumbering % Inizia a numerare le righe
          `
          e nell’indice analitico die nomi compare:

          Amelia, Ameria, Amelia (Terni), 2, 5
          contrata, v. Burgi, Forpontis, Marclani, Montis Labri, Platee, Vallis

          Non è quello che volevi ottenere?

          Forse questo esempio, che conferma che avevo capito bene la famosa pagina 11, chiarisce anche a te la natura del problema.

          Capisco che l’esempio è “ut exemplum utar”, quindi non è importate che la cosa sia sensata semanticamente, ma io non metterei mai vicino , p.e., Burgi l’indicizzazione che punta all’indice analitico per indicare vedi Burgi, quando la voce Burgi Non c’è. Ma, come dicevo, è irrilevante che l’esempio minimo compilabile contenga in testo sensato; non usiamo lipsum per creare del testo senza senso?

          PS: ho un erroe di eledmac; che mi dice che i miai \pstart e \pend (nascosti dentro \NuovoPar e \FinePar) sono in numero diapsri, ma a me non sembra; comunque questo è un problemino solo mio, nel senso che a forza di copia e incolla potrei aver scombussolato la sequenza dei \NuovoPar e \FinePar, questione irrilevante rispetto al problema degli indici.

        • #91046
          Up
          0
          Down
          ::


          Ciao Claudio, il sorting infatti è corretto salvo il caso in cui l’entry principale (Amelia) è presente nei paragrafi di Eledmac in cui compaiono anche le sub-sub-entries.
          Considera che il progetto complessivo ha 14 pagine di indice dei nomi, quindi l’idea di farlo a manina non è proprio allettantissima, però se non c’è altro modo…

        • #91047
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Dalle istruzioni di maeindex non vedo altra possibilità. Ma certamente se non è un bug è una feature. 🙁

            In ogni caso è tutta colpa di makeindex. Il pacchetto imakeidx non c’entra nulla in questo problema.

          • #91048
            Up
            0
            Down
            ::


            Grazie Claudio, facendo così funziona. Ti riporto però il commento amaro di mia moglie: “Farlo a mano non è una soluzione degna di LaTeX”.
            In effetti a manina si poteva fare anche in Word.
            Ma se nessuno ha idee migliori metteremo a posto queste 14 pagine a mano 😐

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

        Go to top