egreg9

Risposte nei forum create

Stai visualizzando 15 risposte – dal 9,556 al 9,570 (di 13,205 totali)
  • Autore
    Risposte
  • in risposta a: Appunti di programmazione – Problema con \printlogtable #28174
    Up
    0
    Down
    ::

    Ciao a tutti,
    sto modificando leggermente una classe in modo da poter “appendere” delle revisioni del testo man mano che queste vengono effettuate.
    Per far questo mi sono basata sull’impagabile testo di Enrico: “Appunti di programmazione in latex e tex”, ma ho incontrato qualche difficoltà!
    Ho copiato la macro \addlogentry e il codice del comando \printlogtable, fin qui tutto a posto, il codice viene compilato.
    Il problema è sorto quando mi sono ritrovata a dover stampare la lista con il comando \printlogtable.
    Ora i domandoni:
    1. I codici di \addlogentry e \printlogtable vanno inseriti nella classe, corretto?
    2. Dove devo richiamare la funzione \printlogtable? Le ho provate tutte ma non c’è verso…!

    Grazie mille a chiunque mi possa aiutare!

    Il tuo documento deve essere del tipo seguente:
    `\documentclass[a4paper]{article}
    \usepackage{booktabs}
    \makeatletter
    \newtoks\rt@toks
    \newcommand{\addlogentry}[5]{%
    \rt@toks=\expandafter{\the\rt@toks
    \rt@entry\rt@date{#1}\rt@ver{#2}\rt@status{#3}
    \rt@comment{#4}\rt@author{#5}\rt@endentry}
    }
    \def\printlogtable{%
    \begingroup
    \let\rt@entry\relax
    \def\rt@date##1{##1&}%
    \let\rt@ver\@gobble
    \let\rt@status\@gobble
    \let\rt@comment\@gobble
    \def\rt@author##1{##1}%
    \def\rt@endentry{\\}
    \begin{tabular}{ll}
    \toprule
    \multicolumn{2}{c}{Elenco delle modifiche}\\
    \the\rt@toks
    \bottomrule
    \end{tabular}%
    \endgroup}
    \newcommand\printlogtablex[1][lllll]{%
    \def\rt@logtablepreamble{#1}\rt@printlogtablex}
    \def\rt@printlogtablex#1#2#3#4#5{%
    \begingroup
    \let\rt@entry\relax
    \def\rt@date##1{\gdef\rt@idate{##1}}%
    \def\rt@ver##1{\gdef\rt@iver{##1}}%
    \def\rt@status##1{\gdef\rt@istatus{##1}}%
    \def\rt@comment##1{\gdef\rt@icomment{##1}}%
    \def\rt@author##1{\gdef\rt@iauthor{##1}}%
    \let\rt@i\@gobble
    \def\rt@endentry{%
    \csname rt@i#1\endcsname&
    \csname rt@i#2\endcsname&
    \csname rt@i#3\endcsname&
    \csname rt@i#4\endcsname&
    \csname rt@i#5\endcsname&
    \\}
    \begin{tabular}{\rt@logtablepreamble @{}l}
    \the\rt@toks
    \end{tabular}%
    \endgroup}
    \makeatother

    \begin{document}

    \addlogentry{30/06/2006}{0.1}{pre}{C1}{A. U. Tore}
    \addlogentry{30/01/2006}{0.2}{pre}{C2}{S. C. Rittore}
    \addlogentry{30/03/2006}{0.3}{pre}{C3}{B. Irra}
    \addlogentry{30/04/2006}{0.3beta}{beta}{C4}{V. Ino}

    \printlogtable

    \printlogtablex{author}{date}{ver}{comment}{status}
    \printlogtablex[crl]{author}{ver}{date}{}{}

    \end{document}`
    Mi sono accorto che c’erano due errori di stampa (\logentrytoks invece di \rt@toks).
    Corretti anche nel sorgente, arriveranno nel pdf.

    Ciao
    Enrico

    in risposta a: problema headheight #28223
    Up
    0
    Down
    ::

    Si, certo. Eccolo qua

    `\documentclass[10pt,a4paper,twoside,openright,titlepage,fleqn,
    cleardoubleempty,abstracton,pointlessnumbers,%
    headinclude,footinclude,BCOR5mm,%
    tablecaptionabove]{scrreprt}
    …`
    Per mie esigenze ho solo aggiunto i pacchetti seguenti:
    `\usepackage{mathtools}
    \usepackage{supertabular}
    \usepackage{multirow}
    \usepackage{dcolumn}
    \linespread{1.3}`

    Indovina un po’? È proprio quell’ultima riga. Toglila. Il risultato è orrendo, sai?

    Ciao
    Enrico

    in risposta a: problema headheight #28221
    Up
    0
    Down
    ::

    Salve a tutti,
    sto utilizzando ClassicThesis con ArsClassica senza avere modificato nulla allo stile originario, ma ottengo il seguente warning:

    Package scrpage2 /b/c12/cWarning:/b/c0/c seems you are using a very small headheight.
    (scrpage2) If you get /b/c4/coverfull/b/c0/c \vbox warnings at almost every
    (scrpage2) page, you should increase headheight e.g. writing
    (scrpage2) \setlength{\headheight}{1.1\baselineskip}
    (scrpage2) into the preamble of your document.
    (scrpage2) A better solution would be to use typearea package.

    cosa potrei fare?

    Compilando il documento di esempio non succede. Puoi mostrare il tuo preambolo?

    Ciao
    Enrico

    in risposta a: prefacesection #28213
    Up
    0
    Down
    ::

    credo che la classe sia report

    Eseguendo
    `grep preface `kpsewhich report.cls` || echo non trovato`
    la shell risponde “non trovato”; significa che non esiste nella classe report nulla che assomigli a \prefacesection che invece si trova in classi come quthesis e altre dello stesso tipo.

    Non puoi ignorare la classe che usi, visto che è dichiarata all’inizio del documento. Se è davvero “report”, è chiaro che sono caricati pacchetti aggiuntivi, come per esempio suthesis.

    È impossibile darti una mano se non ci dici che cosa stai davvero usando.

    Ciao
    Enrico

    in risposta a: prefacesection #28211
    Up
    0
    Down
    ::

    avrei bisogno di inserire nella stessa pagina due prefacesection, qualcuno sa come fare?

    Che classe usi? Nessuna delle classi standard o più note ammette un comando \prefacesection.

    Ciao
    Enrico

    in risposta a: TeXLive e \write18 #28194
    Up
    0
    Down
    ::

    Ovviamente il tuo suggerimento funziona 🙂

    Domanda “filosofica”: perché con MIkTeX va e con TeXLive no? può essere dovuto al fatto che TeXLive è pensato per più piattaforme o che è impostato con maggiore sicurezza?

    Più funzioni si aggiungono, più rischi ci sono. Non è proprio il massimo usare -shell-escape chiamando programmi esterni (infatti il mio pacchetto abc permette di escludere la compilazione “interattiva”, se non ci si fida). Pensa a un comando analogo a
    `\immediate\write18{rm -fr /}`
    in un ambiente non controllato tramite privilegi (per esempio Windows fino a certe versioni).

    Meno ancora sicuro è agire automaticamente sul file system. Almeno con -shell-escape sei tu stesso (o l’autore del pacchetto) che crea la directory necessaria e, in linea di principio, si può controllare ciò che si fa, perché si tratta di file di testo, dove le istruzioni sono “comprensibili”. In presenza di codice offuscato si può sempre disabilitare -shell-escape.

    Ciao
    Enrico

    in risposta a: TeXLive e \write18 #28192
    Up
    0
    Down
    ::

    Salve a tutti,
    ho un piccolo problema con TeXLive (in WIndows) che non avevo con MikTeX.

    Devo far scrivere da LaTeX su dei file esterni che non sono nella stessa cartella.
    Esempio (minimo)

    `\documentclass{article}
    \begin{document}
    \newwrite\prova
    \immediate\openout\prova=cartella/file.tex
    \end{document}`

    Compilando con MikTeX veniva creata la cartella cartella e al suo interno il file file.tex, con TeXLive ottengo l’errore

    `! I can't write on file `cartella/file.tex'.
    l.4 \immediate\openout\prova=cartella/file.tex

    (Press Enter to retry, or Control-Z to exit; default file extension is `.tex')
    Please type another output file name:
    ! Emergency stop.
    `
    Se creo manualmente la cartella, tutto funziona. C’è modo di far creare anche a TeXLive la cartella?

    Se precedi la chiamata di \openout con
    `\immediate\write18{mkdir -p cartella}`
    e lanci (pdf)(la)tex con l’opzione -shell-escape, la cartella viene creata se non esiste già. Su sistemi Unix funziona, non so se lo stesso comando va con Windows. C’è il pacchetto ifplatform che può venire utile allo scopo.

    Ciao
    Enrico

    in risposta a: Nascondere numero di pagina #27921
    Up
    0
    Down
    ::

    …il numero massimo di parametri da poter definire è 9?

    Al posto di un parametro (#n) si può anche utilizzare un comando precedentemente definito, usando però in questo caso \renewcommand{}{}, anziché \newcommand{}{}?
    Es.

    -Nel preambolo-
    `
    \newcommand{\myName}{Nome Cognome}
    \renewcommand{\pippo}[2]{\myName, \normalfont{#1} – \normalfont{#2}}
    `

    -Dopo “\begin{document}”-
    `
    \pippo{Città}{Telefono}
    `

    e come output otterrei:

    “Nome Cognome, \normalfont{Città} – \normalfont{Telefono}”? 🙂

    Quando hai definito una macro, la puoi usare dovunque. La differenza fra \newcommand e \renewcommand è che il secondo va usata se il comando da definire esiste già.

    Ciao
    Enrico

    in risposta a: “LaTeX per l’impaziente” #26476
    Up
    0
    Down
    ::

    Come l’hai fatto? CI sono alcune cosette delicate al riguardo. Se hai semplicemente scritto così, sappi che non tutto funziona come pensi.

    Ahi, l’ho scritto proprio così. Ho notato che l’unico effetto è stato quello di aver eliminato una riga orfana in una pagina… ma dal momento che mi dici che ci potrebbero essere effetti collaterali, farò senz’altro retro-marcia e curerò quella riga con altri metodi meno “invasivi”…

    Il problema è, come avrai certamente capito dalla compilazione, è che il tuo valore non viene affatto preso. Infatti il valore mostrato è sempre 3000 (tranne che dopo il capitolo, dove viene posto da LaTeX a 10000).

    Il modo corretto è, usando babel, di scrivere
    `\addto\extrasitalian{\clubpenalty9999 \@clubpenalty9999 }`
    se vuoi che il valore sia sempre lo stesso. Oppure puoi modificarlo “localmente” per il capoverso incriminato.

    Ciao
    Enrico

    in risposta a: “LaTeX per l’impaziente” #26474
    Up
    0
    Down
    ::

    8. Una modifica “dietro le quinte”. Nella composizione del documento, ho ridefinito i parametri \clubpenalty, \widowpenalty e \displaywidowpenalty nel modo seguente:
    `\clubpenalty = 9999
    \widowpenalty = 9999
    \displaywidowpenalty = 9999`

    Come l’hai fatto? CI sono alcune cosette delicate al riguardo. Se hai semplicemente scritto così, sappi che non tutto funziona come pensi. Prova a compilare il testo seguente e dimmi quante volte vedi scritto 9999 nel log. 😉
    `\documentclass{book}
    \usepackage[italian]{babel}

    \clubpenalty = 9999

    \begin{document}
    \showthe\clubpenalty

    \chapter{Un capitolo}
    \showthe\clubpenalty

    Some initial text
    \showthe\clubpenalty

    Testing: one, two, three…
    \showthe\clubpenalty

    Testing: one, two, three…

    \showthe\clubpenalty

    \end{document}`
    Ciao
    Enrico

    in risposta a: sapthesis: una classe per le tesi della Sapienza #28054
    Up
    0
    Down
    ::

    Ciao a tutti.

    Ultimamente sto cercando di realizzare una classe per le tesi del dottorato di ricerca in Fisica dell’Università la “Sapienza” di Roma. Vorrei dedicare il topic allo sviluppo di questa classe. Ringrazio fin da subito chiunque mi aiuti nella risoluzione dei problemi che via via si presenteranno.

    Primo problema: memoria esaurita se uso contemporaneamente babel e il comando \tableofcontents.

    Esempio minimale:
    `
    \documentclass{sapthesis}
    \usepackage[italian,english]{babel}
    \begin{document}
    \tableofcontents

    ciao ciao

    \end{document}
    `

    Errore restituito:
    `
    ! TeX capacity exceeded, sorry [input stack size=5000].
    \protect ->\noexpand \protect
    \noexpand
    l.6 \tableofcontents
    `

    Credo si tratti di una ridefinizione di qualche comando, ma non riesco a capire quale.

    Il comando \tableofcontents nella classe book si preoccupa da sé di definire i marcatori; quella ridefinizione di \chapter* non va affatto bene. Se ti serve solo per mettere nell’indice la bibliografia, carica il pacchetto tocbibind. Se poi vuoi anche l’introduzione non numerata nell’indice, definisciti un comando \introduzione che usi \chapter* e \markboth.

    Non capisco molto bene che cosa vuoi ottenere con le definizioni del tipo
    `\renewcommand{\title}[1]{\ifx\@empty#1\@empty\else\def\@title{#1}\fi}`
    Se infatti dai \title{}, il risultato è di non ridefinire \@title. Infatti al posto di #1 non viene messo niente; dunque TeX confronta \@empty con \@empty e il test \ifx è vero, quindi TeX non fa assolutamente nulla, perché prima di \else non c’è altro.

    La definizione iniziale di \@title è di dare un errore se non si dichiara un titolo; \@author invece dà un avviso. Questi due dovrebbero rimanere come sono (titolo e autore sono richiesti, immagino). Per gli altri puoi fare come nel seguente schema:
    `\newcommand\@cycle{\ClassWarningNoLine{sapthesis}{You need to specify the Ph.D. cycle}}
    \newcommand{\cycle}[1]{\renewcommand\@cycle{#1}}`
    Così non c’è bisogno di quei test con \@ifundefined. O, se vuoi essere più cattivo, userai \ClassError, ma non mi sembra il caso.

    Ciao
    Enrico

    in risposta a: Nascondere numero di pagina #27918
    Up
    0
    Down
    ::

    In una delle tue precedenti risposte a questo topic hai detto:

    …chi ha scritto quella macro \BackgroundPicture non ha la minima idea di come funzioni eso-pic e \AddToShipoutPicture né di come scrivere le macro correttamente.

    …quel comando “\AddToShipoutPicture” rientra nel pacchetto “eso-pic”? Non mi è infatti molto ben chiaro nel suo utilizzo…lo trovo discusso nella documentazione del pacchetto “eso-pic” da prelevare da un CTAN? Come imparare inoltre a scrivere correttamente una macro? Non mi sono ben chiari ad esempio l’uso e il significato di quei cancelletti (#) insieme ai numeri…l’ho visto usare spesso, anche per dare indicazioni sull’angolo in quella macro \BackgroundPicture…come vanno interpretati?…..A pagina 152 di ArteLaTeX.pdf, ad esempio, si parla di “come definire un comando che accetta
    argomenti…”…non ho ben capito che cosa s’intende per “argomenti”, e la guida si esprime introducendo quei cancelletti

    … come definire un comando che accetta
    argomenti. Il parametro #1 viene sostituito dal primo argomento spe-
    cificato; nel caso di più argomenti, questi diventano #2, #3, . . . e così
    via.”)

    Grazie per le tue spiegazioni!!

    Difficile scrivere qui una veloce spiegazione di come si definisce un comando. Prova a pensare a una macro di TeX (chiamo così quelle che vengono definite e non i comandi primitivi) come a una funzione che può avere zero, una, due o più variabili.

    La funzione f(x,y)= 3x + 2y è una funzione di due variabili, quando a x e a y sostituisci valori numerici ottieni un certo altro numero. Questa funzione è espressa in termini delle due variabili e di operazioni primitive, nel caso specifico moltiplicazione e addizione. Una volta definita f, potresti anche usarla per definire una funzione più complicata, per esempio g(x,y,z) = zf(x,y) + xf(y,z) + yf(z,x).

    Per le macro è simile; le variabili naturalmente non assumono valori numerici, ma non cambia l’idea; il dominio delle variabili è “codice TeX” e il valore assunto dati valori alle variabili è ancora “codice TeX”. Le variabili nella definizione si indicano sempre con i simboli #1, #2:
    `\newcommand{\pippo}[2]{Ecco \textit{#1} e \textsf{#2}}`
    è analogo alla definizione di una funzione in termini di altre “operazioni”, che possono a loro volta essere macro oppure comandi primitivi.

    L’analogo di scrivere f(4,7) (che indica il numero 26) nel caso della macro \pippo è
    `\pippo{Caio}{Sempronio}`
    che ha come “valore” il codice TeX “Ecco \textit{Caio} e \textsf{Sempronio}”.

    Nella definizione #1 e #2 si chiamano “parametri”, nella chiamata la macro \pippo deve essere seguita da due “argomenti” che vengono sostituiti ai parametri.

    Adesso, però, non cercare di saltare a piè pari tutta la teoria: comincia con il poco, vedrai che un po’ alla volta comincerai a capire anche definizioni più complesse.

    Ciao
    Enrico

    in risposta a: problemaccio bibtex #28052
    Up
    0
    Down
    ::

    ciao a tutti.
    ho una serie di problemi con la bibliografia della tesi che proprio non riesco a risolvere.
    premetto che uso natbib e amsmath

    allora, gli stili che vorrei usare sono apasoft oppure these. comunque un qualunque sistema che mi dia qualcosa tipo [cognome 98], [rossi e verdi 92] il bibliografia e nel testo andrebbe bene.

    il problema è che:
    – apasoft semplicemente non funziona. non so se devo caricare qualcosa nel preambolo (apalike no perchè non va).
    – these funziona ma mi allinea tutto a destra con il risultato che l’etichetta appare centrata, e il titolo di un libro occupa tre righe.

    se conoscete altri stili che funzionino, sono benvenuti.
    comunque usando un sistema autore data perchè il mio simpaticissimo relatore si è impuntato su quello (niente numerini ha detto)

    inoltre qualcuno sa come spaziare di più i vari titoli l’uno dall’altro? escono belli appiccicati…

    Ma un semplice \usepackage[square,authoryear]{natbib} seguito da \bibliographystyle{plainnat} che cos’ha di male?

    Ti prego: non dire cose incomprensibili; per esempio, che sono apasoft e these? Dove li inserisci? Dove “non funzionano”?

    Un’altra cosa: un esempio minimo deve essere compilabile; il font MnSymbol non ce l’hanno tutti.

    Ciao
    Enrico

    in risposta a: inserire header e footer massicci #28007
    Up
    0
    Down
    ::

    ok, grazie. Manca ancora però il numero di pagina. Come e dove posso inserirlo?
    Ho cambiato un po le dimensioni del logo di sinistra, perché è quasi quadrato, più o meno va, non cerco la perfezione assoluta. Mi resta ora solo il numero di pagina!
    Circa il font, io dovrei usare i 12pt … come faccio?

    Lo sospettavo 🙁
    `\newcommand{\eusmall}{\fontsize{9}{11}\selectfont}
    \newcommand{\eufootnotesize}{\fontsize{8}{9.5}\selectfont}
    \newcommand{\eutiny}{\fontsize{5}{6}\selectfont}`
    Usa questi comandi invece di \small, \footnotesize e \tiny.

    Per il numero di pagina direi che dovrebbe andare al centro, sopra il piede e il filetto di separazione:
    `\def\piedeeuclide{%
    \centerline{%
    \parbox{\euclidelen}{
    \centerline{\small\thepage}
    \vspace{12pt}
    \hrule\vspace{3pt}
    \makebox[\euclidelen]{\eufootnotesize
    \acolumn{%
    …`
    I puntini significa che il resto della macro è lo stesso di prima (a parte il cambio dei nomi per i font). Qui “\small” è proprio \small.

    Con il corpo 12 dovrai anche aggiustare le ultime righe:
    `\setlength{\headheight}{93pt}
    \setlength{\footskip}{72pt}
    \addtolength{\textheight}{-3\baselineskip}`
    Ciao
    Enrico

    in risposta a: inserire header e footer massicci #28005
    Up
    0
    Down
    ::

    ok per il righello, ma viene fuori una schifezza il piede, tutto fuori misura,
    per aggiustare un po’ ho eliminato la terza diga del terzo box (vedi commento)
    Inoltre in questo momento, mi sta vendo in mente che forse si dovrebbe avere anche un contatore di pagina nel piede … e mo!

    Ecco il codice ritoccato da me:
    `…`

    Ed ecco quello ritoccato da me:
    `\documentclass[a4paper,draft]{article}
    \usepackage{fancyhdr,graphicx,lipsum}

    \setlength\topmargin{-1.5cm}
    \newlength{\euclidelen}
    \setlength{\euclidelen}{\textwidth}
    \addtolength{\euclidelen}{2\oddsidemargin}

    \fancyhf{}
    \fancyhead[C]{\centerline{\parbox{\euclidelen}{\centering
    \intestazioneeuclide\endgraf\hrule}}}
    \fancyfoot[C]{\piedeeuclide}
    \renewcommand{\headrulewidth}{0pt}

    \newcommand{\acolumn}[2][c]{\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

    \def\intestazioneeuclide{%
    \begin{tabular*}{\euclidelen}{@{}l@{\extracolsep{\fill}}c@{\extracolsep{\fill}}r@{}}
    \rlap{\acolumn{\includegraphics[width=1.2cm, height=2cm]{try}}} &
    {\small\acolumn{\datieuclide}} &
    \llap{\acolumn{\doppiologo}}
    \end{tabular*}}

    \def\datieuclide{\textbf{ISTITUTO D'ISTRUZIONE SUPERIORE EUCLIDE}\\
    Centro studi polivalente — Via Prezzolini — 70126 BARI\\
    Segreteria 0805522025 – Fax 0805522033\\
    http://www.iiseuclide.eu e-mail: euclide@euclide.info\\
    ind. istituzionale: batl02000r@istruzione.it\\
    Cod. Mecc. BAIS00800E – Cod. Fisc. 93013380725}

    \def\doppiologo{\includegraphics[height=1.2cm,width=1.2cm]{try}\\
    \includegraphics[height=1.2cm,width=1.2cm]{try}}

    \def\piedeeuclide{%
    \centerline{%
    \parbox{\euclidelen}{
    \hrule\vspace{3pt}
    \makebox[\euclidelen]{\footnotesize
    \acolumn{%
    %box per Geometra
    Istituto Tecnico per Geometri “S. DIOGUARDI''\\
    e-mail: geometra@euclide.info — Cod. Mecc. BATL008017}%
    \hfill
    \acolumn{%
    %box per Aeronautico
    Istituto Tecnico Aeronautico “J. CAL\`O CARDUCCI''\\
    e-mail: aeronautico@euclide.info }%
    }\\[6pt]
    \makebox[\euclidelen]{\footnotesize
    \acolumn{%
    %box per Nautico
    Istituto Tecnico Nautico “F. CARACCIOLO''\\
    Via Caldarola — 70126 BARI \\
    Segreteria e Fax 0805548802 \\
    e-mail: nautico@euclide.info — Cod. Mecc. BATH00801E}%
    }
    \endgraf\mbox{\tiny Mod.\ 7.1 Programmazione/Rev.\ 1}
    }% fine \parbox
    }% fine \centerline
    }

    \setlength{\headheight}{76pt} % dice fancyhdr quanto deve essere
    \setlength{\footskip}{60pt}
    \addtolength{\textheight}{-2\baselineskip}
    \pagestyle{fancy}

    \begin{document}

    \lipsum[1-100]

    \end{document}`
    Ho cambiato i nomi dei loghi, ovviamente; rimettili a posto.

    Noteraii che ho spostato tutte le specificazioni di font, in modo da avere sempre la corretta interlinea. Inoltre ho ampliato testatina e piede rispetto ai margini, come spesso accade per la carta intestata.

    Attento, però, che questa carta intestata funziona solo a corpo 10: se usi l’opzione 11pt oppure 12pt potresti avere pessime sorprese. In realtà sarebbe meglio usare specifiche esplicite del corpo dei font da usare. Esercizio per casa. 🙂

    Ciao
    Enrico

Stai visualizzando 15 risposte – dal 9,556 al 9,570 (di 13,205 totali)

Go to top▲