Marco

Risposte nei forum create

Stai visualizzando 15 risposte – dal 16 al 30 (di 382 totali)
  • Autore
    Risposte
  • in risposta a: Riferimento ipertestuale non funzionante #103291
    Up
    0
    Down
    ::


    Ciao Angelo e benvenuto sul forum GuiT. Come sottinteso da @Liverpool, occorrono delle informazioni in più. Dovresti fornirci un esempio minimo compilabile che riproduca l’errore, ossia un documento che parte [tt]\documentclass[/tt] fino a [tt]\end{document}[/tt], così che noi possiamo semplicemente copiarlo e aiutarti.

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103257
    Up
    0
    Down
    ::


    Puoi postare un esempio di cosa intendi? Questo codice mi sembra funzionare (ho aggiunto anche [tt]\acfp[/tt] se vuoi usarlo dentro all’argomento opzionale di [tt]\item[/tt]).
    `
    \documentclass[10pt,% % corpo del font principale
    a4paper,% % carta A4
    twoside,openright,% % fronte-retro
    % oneside,openany,% % solo fronte
    titlepage,% % frontespizio
    headinclude,,footinclude,% % testatina e piede di pagina
    BCOR5mm,% % rilegatura di 5 mm
    cleardoublepage=empty,% % pagine vuote senza testatina e piede di pagina
    tablecaptionabove,% % didascalie in cima alle tabelle
    ]{scrreprt} % classe report di KOMA-Script;

    \usepackage[T1]{fontenc} % codifica dei font:
    % NOTA BENE! richiede una distribuzione *completa* di LaTeX,
    % per esempio TeXLive o MiKTeX *complete*

    \usepackage[utf8]{inputenc} % codifica di input; anche [latin1] va bene
    % NOTA BENE! va accordata con le preferenze dell'editor

    \usepackage[italian,english]{babel} % per scrivere in italiano e in inglese;
    % l'ultima lingua (l'italiano) risulta predefinita

    \usepackage[suftesi]{frontespizio} % frontespizo
    % per includerlo nel documento bisogna:
    % 1. compilare una prima volta Tesi.tex;
    % 2. compilare a parte Tesi-frn.tex, generato dalla compilazione precedente;
    % 3. compilare ancora Tesi.tex.

    \usepackage{indentfirst} % rientra il primo capoverso di ogni sezione

    \usepackage{graphicx} % immagini

    \usepackage{listings} % codici

    \usepackage[font=small]{quoting} % citazioni

    \usepackage{amsmath,amssymb,amsthm} % matematica

    \usepackage[italian]{varioref} % riferimenti completi della pagina

    \usepackage{mparhack,relsize} % finezze tipografiche

    \usepackage{tabularx} % tabelle di larghezza prefissata

    \usepackage[style=philosophy-modern,citestyle=numeric-comp,hyperref,backref,square,natbib,backend=biber]{biblatex}
    % eccellente pacchetto per la bibliografia;
    % produce uno stile di citazione autore-anno;
    % lo stile “numeric-comp” produce riferimenti numerici;
    % NOTA BENE! bisogna che il proprio editor sia configurato per biber

    %\addbibresource{Bibliografia.bib} % database di biblatex

    \defbibheading{paper}{\noindent \Large{BIBLIOGRAPHY}}
    \defbibheading{web}{\noindent \Large{WEBSITES}\footnote{Date refers to last online visit}}

    \usepackage{subfig} % sottofigure, sottotabelle

    \usepackage{eurosym} % simbolo dell'euro

    \usepackage[eulerchapternumbers,% % numeri dei capitoli nel font Euler
    subfig,% % se si usa il pacchetto subfig
    beramono,% % Bera Mono come font a spaziatura fissa
    eulermath,% % AMS Euler come font per la matematica
    pdfspacing,% % migliora il riempimento di riga
    listings,% % codici
    % parts,% % da decommentare in un documento diviso in parti
    ]{classicthesis} % stile ClassicThesis

    \usepackage{arsclassica} % modifica alcuni aspetti di ClassicThesis

    \usepackage[printonlyused,withpage]{acronym}

    \makeatletter
    \def\ac@read#1{\expandafter\ac@readi#1{#1}}
    \def\ac@readi#1#2#3{\def\noexpand#3{\unexpanded{{#1}}{\@skipmath\lowercase#2$\valign$}}}
    \DeclareRobustCommand{\MakeTextLowercase}{\@uclcnotmath{\def\ac##1{\ifcsname fn@##1\endcsname\expandafter\ac@read\csname fn@##1\endcsname\fi\NoCaseChange{\ac{##1}}}\def\acfp##1{\ifcsname fn@##1\endcsname\expandafter\ac@read\csname fn@##1\endcsname\fi\NoCaseChange{\acfp{##1}}}}{##1##2}\lowercase}
    \makeatother

    \begin{document}

    \section{Acronyms}
    \noindent{\huge{\textbf{E}}}
    \begin{acronym}
    \acro{EPM}{European Physiology Module}
    \acro{AAP}{Altro Acronimo di Prova}
    \end{acronym}

    %%%%%%

    \begin{description}
    \item[ciao]
    \item[\ac{EPM}]
    \item[\ac{AAP}]
    \item[\acfp{AAP}]
    \end{description}
    \ac{EPM}
    \ac{AAP}
    \acfp{AAP}

    \end{document}
    `

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103255
    Up
    0
    Down
    ::


    Basta che modifichi l’oggetto del primo messaggio e aggiungi “RISOLTO: ”. 😉

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103253
    Up
    0
    Down
    ::


    Eccomi, scusa il ritardo ma sono ancora in sessione esami 👿
    Comunque è un errore mio, ho dimenticato uno spazio nel nome della macro 😳
    `
    \makeatletter
    \def\ac@read#1{\expandafter\ac@readi#1{#1}}
    \def\ac@readi#1#2#3{\def\noexpand#3{\unexpanded{{#1}}{\@skipmath\lowercase#2$\valign$}}}
    \@namedef{MakeTextLowercase }{\@uclcnotmath{\def\ac##1{\ifcsname fn@##1\endcsname\expandafter\ac@read\csname fn@##1\endcsname\fi\NoCaseChange{\ac{##1}}}}{##1##2}\lowercase}
    \makeatother
    `
    Nota attentamente che la macro è definita [tt]\@namedef{MakeTextLowercase }[/tt]. Lo spazio nel nome della macro è necessario: questa differisce da [tt]\MakeTextLowercase[/tt], più precisamente è una sua macro interna. Nello specifico fa parte di un sistema idea per rendere robuste le macro: questo significa che le macro non saranno espanse sempre, ma solo in determinate occasioni dove gli viene concesso, per impedirne espansioni indesiderate, con effetti talvolta disastrosi (come hai potuto sperimentare).
    Dimenticandomi lo spazio ho distrutto la “robustezza” della macro perché ho sovrascritto la macro [tt]\MakeTextLowercase[/tt] perdendo tutto il meccanismo. Rinominare invece la versione con uno spazio finale permette di operare sulla macro le modifiche desiderate, senza perdere tutto il meccanismo di irrobustimento della macro.

    Provvedo subito nella correzione anche i miei precedenti interventi, chiedo scusa per il disguido.

    PS Correggendo le precedenti macro mi sono ricordato del comando [tt]\DeclareRobustCommand[/tt] che utilizzi proprio per definire nuove macro robuste (o sovrascrivere precedenti). Per evitare disguidi, ti consiglio di utilizzare questa macro. Il codice diventa quindi
    `
    \makeatletter
    \def\ac@read#1{\expandafter\ac@readi#1{#1}}
    \def\ac@readi#1#2#3{\def\noexpand#3{\unexpanded{{#1}}{\@skipmath\lowercase#2$\valign$}}}
    \DeclareRobustCommand{\MakeTextLowercase}{\@uclcnotmath{\def\ac##1{\ifcsname fn@##1\endcsname\expandafter\ac@read\csname fn@##1\endcsname\fi\NoCaseChange{\ac{##1}}}}{##1##2}\lowercase}
    \makeatother
    `
    In questo caso ridefinisci direttamente [tt]\MakeTextLowercase[/tt], si occuperà poi [tt]\DeclareRobustCommand[/tt] di renderla robusta e sovrascrivere la macro interna con la nuova impostazione.

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103251
    Up
    0
    Down
    ::


    Niente, sul mio calcolatore continua a compilare tranquillamente (togliendo i warning vari). L’unica cosa che viene in mente è consigliarti di eliminare i file ausiliari (per capirci .log, .aux e simili, se usi un editor LaTeX-friendly esistono i pulsanti appositi). Hai provato a compilare il codice con il tuo preambolo che a me funziona? Ti restituisce comunque un errore? Se l’ultima risposta è affermativa, postami un esempio completo compilabile (da [tt]\documentclass[/tt] fino a [tt]\end{document}[/tt]) che restituisce l’errore.

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103249
    Up
    0
    Down
    ::


    A me questo codice compila tranquillamente (se escludiamo i warning, sei sicuro che [ŧt]classicthesis[/tt] sia compatibile con le classi KOMA-script?). Potresti postare il contenuto del file [tt]impostazione-tesi.tex[/tt]?
    `
    \documentclass[10pt,% % corpo del font principale
    a4paper,% % carta A4
    twoside,openright,% % fronte-retro
    % oneside,openany,% % solo fronte
    titlepage,% % frontespizio
    headinclude,,footinclude,% % testatina e piede di pagina
    BCOR5mm,% % rilegatura di 5 mm
    cleardoublepage=empty,% % pagine vuote senza testatina e piede di pagina
    tablecaptionabove,% % didascalie in cima alle tabelle
    ]{scrreprt} % classe report di KOMA-Script;

    \usepackage[T1]{fontenc} % codifica dei font:
    % NOTA BENE! richiede una distribuzione *completa* di LaTeX,
    % per esempio TeXLive o MiKTeX *complete*

    \usepackage[utf8]{inputenc} % codifica di input; anche [latin1] va bene
    % NOTA BENE! va accordata con le preferenze dell'editor

    \usepackage[italian,english]{babel} % per scrivere in italiano e in inglese;
    % l'ultima lingua (l'italiano) risulta predefinita

    \usepackage[suftesi]{frontespizio} % frontespizo
    % per includerlo nel documento bisogna:
    % 1. compilare una prima volta Tesi.tex;
    % 2. compilare a parte Tesi-frn.tex, generato dalla compilazione precedente;
    % 3. compilare ancora Tesi.tex.

    \usepackage{indentfirst} % rientra il primo capoverso di ogni sezione

    \usepackage{graphicx} % immagini

    \usepackage{listings} % codici

    \usepackage[font=small]{quoting} % citazioni

    \usepackage{amsmath,amssymb,amsthm} % matematica

    \usepackage[italian]{varioref} % riferimenti completi della pagina

    \usepackage{mparhack,relsize} % finezze tipografiche

    \usepackage{tabularx} % tabelle di larghezza prefissata

    \usepackage[style=philosophy-modern,citestyle=numeric-comp,hyperref,backref,square,natbib,backend=biber]{biblatex}
    % eccellente pacchetto per la bibliografia;
    % produce uno stile di citazione autore-anno;
    % lo stile “numeric-comp” produce riferimenti numerici;
    % NOTA BENE! bisogna che il proprio editor sia configurato per biber

    %\addbibresource{Bibliografia.bib} % database di biblatex

    \defbibheading{paper}{\noindent \Large{BIBLIOGRAPHY}}
    \defbibheading{web}{\noindent \Large{WEBSITES}\footnote{Date refers to last online visit}}

    \usepackage{subfig} % sottofigure, sottotabelle

    \usepackage{eurosym} % simbolo dell'euro

    \usepackage[eulerchapternumbers,% % numeri dei capitoli nel font Euler
    subfig,% % se si usa il pacchetto subfig
    beramono,% % Bera Mono come font a spaziatura fissa
    eulermath,% % AMS Euler come font per la matematica
    pdfspacing,% % migliora il riempimento di riga
    listings,% % codici
    % parts,% % da decommentare in un documento diviso in parti
    ]{classicthesis} % stile ClassicThesis

    \usepackage{arsclassica} % modifica alcuni aspetti di ClassicThesis

    \usepackage{bookmark} % segnalibri

    \usepackage{enumerate}

    \usepackage[printonlyused,withpage]{acronym}

    %\usepackage[table, x11names, rgb]{xcolor}
    \usepackage{colortbl}

    %\input{impostazioni-tesi} % file con le impostazioni personali
    \makeatletter
    \def\ac@read#1{\expandafter\ac@readi#1{#1}}
    \def\ac@readi#1#2#3{\def\noexpand#3{\unexpanded{{#1}}{\@skipmath\lowercase#2$\valign$}}}
    \DeclareRobustCommand{\MakeTextLowercase}{\@uclcnotmath{\def\ac##1{\ifcsname fn@##1\endcsname\expandafter\ac@read\csname fn@##1\endcsname\fi\NoCaseChange{\ac{##1}}}}{##1##2}\lowercase}
    \makeatother

    \begin{document}

    \section*{Acronyms}
    \noindent{\huge{\textbf{E}}}
    \begin{acronym}
    \acro{EPM}{European Physiology Module}
    \acro{AAP}{Altro Acronimo di Prova}
    \end{acronym}

    %%%%%%

    \begin{description}
    \item[ciao]
    \item[\\ac{EPM}]
    \item[\ac{AAP}]
    \item[\ac{EPM}]
    \end{description}
    \ac{EPM}
    \ac{AAP}

    \end{document}
    `
    Come vedi ho commentato il file delle tue impostazioni personali, non avendolo.

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103246
    Up
    0
    Down
    ::


    Un errore mio 😀 A me funzionava perché tra le varie prove era rimasti i file ausiliari (in questo caso il file .aux) che contenevano la definizione di [tt]\fn@[/tt]. La mancata definizione comporta una serie di problemi nella correzione della macro. Questo codice controlla che sia definita la macro incriminata prima di espandere tutto.
    `
    \documentclass[10pt]{scrreprt} % classe report di KOMA-Script;

    \usepackage[T1]{fontenc} % codifica dei font:
    % NOTA BENE! richiede una distribuzione *completa* di LaTeX,
    % per esempio TeXLive o MiKTeX *complete*

    \usepackage[utf8]{inputenc} % codifica di input; anche [latin1] va bene
    % NOTA BENE! va accordata con le preferenze dell'editor

    \usepackage[italian,english]{babel} % per scrivere in italiano e in inglese;
    % l'ultima lingua (l'italiano) risulta predefinita

    \usepackage{indentfirst} % rientra il primo capoverso di ogni sezione

    \usepackage{mparhack,relsize} % finezze tipografiche

    \usepackage[eulerchapternumbers,% % numeri dei capitoli nel font Euler
    beramono,% % Bera Mono come font a spaziatura fissa
    eulermath,% % AMS Euler come font per la matematica
    pdfspacing,% % migliora il riempimento di riga
    listings,% % codici
    % parts,% % da decommentare in un documento diviso in parti
    ]{classicthesis} % stile ClassicThesis

    \usepackage{arsclassica} % modifica alcuni aspetti di ClassicThesis

    \usepackage{bookmark} % segnalibri

    \usepackage[printonlyused,withpage]{acronym}
    \makeatletter
    \def\ac@read#1{\expandafter\ac@readi#1{#1}}
    \def\ac@readi#1#2#3{\def\noexpand#3{\unexpanded{{#1}}{\@skipmath\lowercase#2$\valign$}}}
    \DeclareRobustCommand{\MakeTextLowercase}{\@uclcnotmath{\def\ac##1{\ifcsname fn@##1\endcsname\expandafter\ac@read\csname fn@##1\endcsname\fi\NoCaseChange{\ac{##1}}}}{##1##2}\lowercase}
    \makeatother

    \begin{document}

    \section*{Acronyms}
    \noindent{\huge{\textbf{E}}}
    \begin{acronym}
    \acro{EPM}{European Physiology Module}
    \acro{AAP}{Altro Acronimo di Prova}
    \end{acronym}

    %%%%%%

    \begin{description}
    \item[ciao]
    \item[\ac{EPM}]
    \item[\ac{AAP}]
    \item[\ac{EPM}]
    \end{description}
    \ac{EPM}
    \ac{AAP}

    \end{document}
    `

    in risposta a: [RISOLTO] Acronimo in un \item di una description #103244
    Up
    0
    Down
    ::


    Questo sembra funzionare
    `
    \documentclass[10pt]{scrreprt} % classe report di KOMA-Script;

    \usepackage[T1]{fontenc} % codifica dei font:
    % NOTA BENE! richiede una distribuzione *completa* di LaTeX,
    % per esempio TeXLive o MiKTeX *complete*

    \usepackage[utf8]{inputenc} % codifica di input; anche [latin1] va bene
    % NOTA BENE! va accordata con le preferenze dell'editor

    \usepackage[italian,english]{babel} % per scrivere in italiano e in inglese;
    % l'ultima lingua (l'italiano) risulta predefinita

    \usepackage{indentfirst} % rientra il primo capoverso di ogni sezione

    \usepackage{mparhack,relsize} % finezze tipografiche

    \usepackage[eulerchapternumbers,% % numeri dei capitoli nel font Euler
    beramono,% % Bera Mono come font a spaziatura fissa
    eulermath,% % AMS Euler come font per la matematica
    pdfspacing,% % migliora il riempimento di riga
    listings,% % codici
    % parts,% % da decommentare in un documento diviso in parti
    ]{classicthesis} % stile ClassicThesis

    \usepackage{arsclassica} % modifica alcuni aspetti di ClassicThesis

    \usepackage{bookmark} % segnalibri

    \usepackage[printonlyused,withpage]{acronym}
    \makeatletter
    \def\ac@read#1{\expandafter\ac@readi#1{#1}}
    \def\ac@readi#1#2#3{\def\noexpand#3{\unexpanded{{#1}}{\@skipmath\lowercase#2$\valign$}}}
    \DeclareRobustCommand{\MakeTextLowercase}{\@uclcnotmath{\def\ac##1{\expandafter\ac@read\csname fn@##1\endcsname\NoCaseChange{\ac{##1}}}}{##1##2}\lowercase}
    \makeatother

    \begin{document}

    \section*{Acronyms}
    \noindent{\huge{\textbf{E}}}
    \begin{acronym}
    \acro{EPM}{European Physiology Module}
    \acro{AAP}{Altro Acronimo di Prova}
    \end{acronym}

    %%%%%%

    \begin{description}
    \item[ciao]
    \item[\ac{EPM}]
    \item[\ac{AAP}]
    \end{description}
    \ac{EPM}
    \ac{AAP}

    \end{document}
    `
    In sostanza il problema è molto simile a quello a cui è venuto incontro @ivan qualche giorno fa. La macro è la stessa [tt]\MakeTextLowercase[/tt] e la soluzione è molto simile: ridefinire localmente [tt]\ac[/tt] affinché

    1. Il suo argomento non venga modificato dalla primitiva [tt]\lowercase[/tt] che rende minuscole le lettere (e quindi altera la sigla di riconoscimento)
    2. Operi una modica della macro [tt]\fn@[/tt]. In tal modo il testo dell’acronimo viene reso in minuscolo.

    Ho aggiunto un acronimo di mia invenzione per testare se tutto funziona.

    Piccola osservazione extra: se hai TeXlive 2015 il pacchetto [tt]fixltx2e[/tt] non è più necessario, puoi rimuoverlo tranquillamente.

    in risposta a: listing fuori pagina #103179
    Up
    0
    Down
    ::


    Questo sembra funzionare. Ho impostato [tt]<[/tt], [tt]?[/tt] e [tt]>[/tt] come letter grazie alla chiave [tt]alsoletter={>}[/tt]. In questo modo vengono riconosciute le stringhe da [tt]emph[/tt]. Ho il dubbio che questo però possa dare qualche problema da altre parti. Controlla se nel tuo documento funziona tutto.
    `
    \documentclass[11pt,oneside]{book}

    \usepackage[italian,english]{babel}
    \usepackage[latin1]{inputenc}

    \usepackage{fancybox}
    \usepackage{verbatim}
    \usepackage{color}
    \usepackage{moreverb}
    \usepackage[final,bookmarks,breaklinks,colorlinks]{hyperref}
    \usepackage{booktabs}

    \usepackage{csquotes}

    \usepackage{listings,xcolor} % php code
    \definecolor{dkgreen}{rgb}{0,.6,0}
    \definecolor{dkblue}{rgb}{0,0,.5}
    \definecolor{dkyellow}{cmyk}{0,0,.8,.3}
    \lstset{
    numbers=left,
    numberstyle=\tiny,
    showspaces=false,
    showtabs=false,
    language = php,
    basicstyle = \small\ttfamily,
    keywordstyle = \color{dkblue},
    stringstyle = \color{gray},
    identifierstyle = \color{blue},
    commentstyle = \color{gray},
    alsoletter ={>},
    emph =[1]{},
    emphstyle =[1]\color{orange},
    emph =[2]{if,and,or,else,new},
    emphstyle =[2]\color{blue}\bfseries
    }

    \begin{document}
    \selectlanguage{italian}
    \pagenumbering{roman}
    \vfill
    \chapter{Introduzione}
    \setcounter{page}{1}
    \pagenumbering{arabic}
    \begin{lstlisting}
    {
    “testata”:”Stringa senza spazi visibili”
    }
    testo vario
    if x=else
    \end{lstlisting}
    \end{document}
    `

    in risposta a: interlinea #103272
    Up
    0
    Down
    ::


    Tenendo conto di quello che ha detto @ivan, il comando è quello giusto, ti consiglierei, se proprio vuoi aumentare l’interlinea, di impostare [tt]\setstretch{1.2}[/tt]. Tieni conto che [tt]\onehalfspacing[/tt] imposta un valore di 1.25.

    in risposta a: interlinea #103269
    Up
    0
    Down
    ::


    Puoi usare il pacchetto [tt]setspace[/tt] e mettere nel preambolo i comandi [tt]\onehalfspacing[/tt] o [tt]\doublespacing[/tt]. Ti consiglierei il primo, se proprio devi usare un avanzamento di linea così marcato.

    in risposta a: listing fuori pagina #103177
    Up
    0
    Down
    ::


    Il tuo problema è che [tt]<[/tt], [tt]>[/tt], [tt]?[/tt] e [tt],[/tt] sono interpretati da [tt]listings[/tt] in modo diverso dalle lettere dell’alfabeto (nel pacchetto si parla rispettivamente di other e letter, immagino centrino con i codici di categoria). Questo implica che la stringa che tu vuoi essere interpretata e colorata incontri dei problemi. Comunque sono riuscito ad aggirare il problema definendo un nuovo tipo di commento con l’apposita opzione [tt]morecomment=[\color{orange}]{}{?>}[/tt]. Nota che l’argomento [tt][/tt] è obbligatorio e in questo caso permette di usare due delimitatori per il tuo commento, che saranno uno di apertura e uno di chiusura. Il seocndo argomento è invece opzionale e ti permette di inserire la formattazione (il colore arancione l’ho impostato solo per evidenziare il rendimento del tutto).

    Qui il codice completo
    `
    \documentclass[11pt,oneside]{book}

    \usepackage[italian,english]{babel}
    \usepackage[latin1]{inputenc}

    \usepackage{fancybox}
    \usepackage{verbatim}
    \usepackage{color}
    \usepackage{moreverb}
    \usepackage[final,bookmarks,breaklinks,colorlinks]{hyperref}
    \usepackage{booktabs}

    \usepackage{csquotes}

    \usepackage{listings,xcolor} % php code
    \definecolor{dkgreen}{rgb}{0,.6,0}
    \definecolor{dkblue}{rgb}{0,0,.5}
    \definecolor{dkyellow}{cmyk}{0,0,.8,.3}
    \lstset{
    numbers=left,
    numberstyle=\tiny,
    showspaces=false,
    showtabs=false,
    language = php,
    basicstyle = \small\ttfamily,
    keywordstyle = \color{dkblue},
    stringstyle = \color{gray},
    identifierstyle = \color{blue},
    commentstyle = \color{gray},
    morecomment = [\color{orange}]{}{?>},
    emph =[1]{if,and,or,else,new},
    emphstyle =[1]\color{blue}\bfseries
    }

    \begin{document}
    \selectlanguage{italian}
    \pagenumbering{roman}
    \vfill
    \chapter{Introduzione}
    \setcounter{page}{1}
    \pagenumbering{arabic}
    \begin{lstlisting}
    {
    “testata”:”Stringa senza spazi visibili”
    }
    testo vario
    if x=else
    \end{lstlisting}
    \end{document}
    `

    in risposta a: modificare un sty originale #103238
    Up
    0
    Down
    ::


    In realtà anche la parte del [tt]rm[/tt] o [tt]del[/tt] fa parte del meccanismo di rivelazione. In sostanza crea il file [tt]\jobname.w18[/tt] (che quindi avrà il nome del tuo main-file) con una stringa contenuta nella macro [tt]\ip@win[/tt] racchiusa tra apici [tt]'[/tt]. Su linux, la shell di comando interpreta gli apici come delimitatori (tutto il testo compreso tra essi verrà utilizzato senza essere interpretato, quindi anche caratteri che altrimenti avrebbero altri impieghi) e li rimuove, mentre immagino che su windows, nelle versioni precedenti a 7, non fossero interpretati o diversamente. Dopo aver salvato il file, legge la prima riga (se sei in shell escape) e la confronta con le macro [tt]\ip@win[/tt] e [tt]\ip@sig[/tt] per comprendere se sei su un sistema unix o windows. Nel primo caso il condizionale [tt]\ifwindows[/tt] viene impostato a vero, nel secondo a falso. Infine elimina il file [tt]\jobname.w18[/tt] usando la opportuna funzione in base al sistema operativo impiegato. Il condizionale [tt]\ifwindows[/tt] immagino servisse solo per selezionare il corretto comando tra [tt]del[/tt] o [tt]rm[/tt] per eliminare il file [tt]\jobname.w18[/tt]. Se usi la versione che ti ho indicato non hai bisogno di tutto il costrutto e non servono né il condizionale [tt]\ifwindows[/tt], né la rimozione del file [tt]\jobname.w18[/tt] perché non viene creato.

    In sostanza, tutto quel codice serve per comprendere se hai attivato lo shell escape e impostare il condizionale [tt]\ifdtt@ShellEscapeEnabled[/tt] a vero o falso di conseguenza. Se stai compilando con [tt]pdflatex[/tt], tutto questo la fai più semplicemente valutando quale valore viene assegnato al contatore [tt]\pdfshellescape[/tt] e agendo di conseguenza.

    in risposta a: modificare un sty originale #103236
    Up
    0
    Down
    ::


    In teoria quel codice fa parte di un costrutto più esteso, il cui unico scopo è impostare vero o falso i condizionali [tt]\ifwindows[/tt] e [tt]\ifdtt@ShellEscapeEnabled[/tt]. Il condizionale [tt]\ifwindows[/tt] compare solo in quel frangente, dove viene impostato, ma non viene più utilizzato in nessun’altro posto. Ho il dubbio che sia un rimasuglio di qualche aggiornamento dimenticato dagli autori del pacchetto.

    Ti consiglio di copiare il file dot2texi.sty e cambiargli nome, poi sostituisci le righe 114-139
    `
    \newif\ifdtt@ShellEscapeEnabled
    \newif\ifwindows
    \edef\ip@file{\jobname.w18}
    \edef\ip@sig{write18-test-\the\year\the\month\the\day\the\time}
    \edef\ip@win{'\ip@sig'}
    \def\ip@read@file{%
    \newread\instream
    \openin\instream=\ip@file
    \@tempcnta=\endlinechar
    \endlinechar=-1
    \read\instream to\@tempa
    \endlinechar=\@tempcnta
    \closein\instream}
    \immediate\write18{echo \ip@win >”\ip@file”}
    \IfFileExists{\ip@file}{\dtt@ShellEscapeEnabledtrue}{\dtt@ShellEscapeEnabledfalse}
    \ifdtt@ShellEscapeEnabled
    \ip@read@file
    \ifx\@tempa\ip@sig
    \windowsfalse
    \else
    \ifx\@tempa\ip@win
    \windowstrue
    \fi
    \fi
    \immediate\write18{\ifwindows del \else rm — \fi “\ip@file”}
    \fi
    `
    con semplicemente
    `
    \newif\ifdtt@ShellEscapeEnabled
    \ifnum\pdfshellescape\@ne
    \dtt@ShellEscapeEnabledtrue
    \else
    \dtt@ShellEscapeEnabledfalse
    \fi
    `
    [tt]\pdfshellescape[/tt] è un contatore che viene impostato all’inizio della compilazione dal programma con tre possibili valori:

    • [tt]0[/tt], quando write18 è completamente disabilitato
    • [tt]1[/tt], quando write18 è attivo
    • [tt]2[/tt], quando write18 è attivo in modalità ristretta

    La modifica che ti ho indicato semplicemente, invece di usare tutto il sistema complesso di prima, controlla se write18 è attivo e quindi imposta a vero il condizionale [tt]\ifdtt@ShellEscapeEnabled[/tt]. Dovrebbe essere indipendente dal sistema operativo. Unica pecca: questo contatore è definito solo per [tt]pdflatex[/tt]. Se devi compilare con altri programmi occorre rattoppare in altro modo.

    in risposta a: listing fuori pagina #103172
    Up
    0
    Down
    ::


    Posta un esempio minimo compilabile, altrimenti è difficile capire cosa devi correggere o dov’è il problema.

Stai visualizzando 15 risposte – dal 16 al 30 (di 382 totali)

Go to top