Nascondere numero di pagina

  • Creatore
    Topic
  • #27907
    Up
    0
    Down
    ::


    Salve a tutti!

    Cercavo un modo per nascondere il numero di una data pagina, ma senza alterare il conteggio delle stesse (quindi, contata si, ma non mostrata come numero).

    Grazie
    Riccardo

Visualizzazione 14 filoni di risposte
  • Autore
    Risposte
    • #27908
      Up
      0
      Down
      ::

      Salve a tutti!

      Cercavo un modo per nascondere il numero di una data pagina, ma senza alterare il conteggio delle stesse (quindi, contata si, ma non mostrata come numero).

      Grazie
      Riccardo

      \thispagestyle{empty} ti toglie tutte le testatine e i piedini. Altrimenti guarda la documentazione di fncyhdr che ti illustra i metodi per modificare il contenuto delle suddette.

    • #27909
      Up
      0
      Down
      ::


      Ciao Mirko, grazie per la risposta.

      E’ necessario caricare qualche pacchetto particolare per quel comando? `\thispagestyle{empty}` Ho provato infatti a inserirlo all’inizio della pagina, ma non ha funzionato…ti spiego meglio:

      sto facendo un po’ di esperimenti per imparare un po’ di comandi in LaTeX (sono nuovo al programma);

      a) un primo intento è stato inserire uno sfondo alla pagina su cui scrivere, e per questo ho trovato il seguente link http://ste.lilik.it/?idart=80.
      Nel momento in cui ho però inserito l’immagine di sfondo da me scelta, me la sono ritrovata fuori scala, e così ho provato a modificare il codice come segue:

      -Nel preambolo-

      `
      \usepackage{graphicx}
      \usepackage{eso-pic,graphicx}
      \makeatletter
      \newcommand\BackgroundPicture[2]{
      \setlength{\unitlength}{1pt}
      \put(0,\strip@pt\paperheight){
      \parbox[t][\paperheight]{\paperwidth}{
      \vfill
      \centering\includegraphics[width=1\paperwidth,height=1\paperheight,angle=#2]{#1}
      \vfill
      }
      }
      }
      \makeatother
      `

      -Dopo \begin{document}-

      `
      \AddToShipoutPicture*{\BackgroundPicture{Immagini/Sfondo.jpg}{0}}
      `

      (volendo fare la prova d’inserire lo sfondo in una sola pagina.)

      …La cosa è sembrata riuscita, ma ho notato un bordino bianco sul margine sinistro della pagina, che vorrei non ci fosse, bensì che fosse riempito dall’immagine di sfondo…e già questo è un primo problemino da risolvere!

      b) Il secondo intento è stato quindi inserire semplicemente l’immagine a piena pagina, ma senza scriverci nulla dentro, continuando a scrivere invece nella pagina successiva (come a voler fare un’eventuale copertina con una data immagine, e poi cominciare a scrivere dalla pagina successiva), e per fare questo ho architettato una cosa un po’ macchinosa, ma che bene o male è riuscita, se non fosse che appunto nell’immagine si vede il numero della pagina. Ho infatti usato questo metodo:

      -Nel preambolo-

      `
      \usepackage{graphicx}
      \usepackage{color}
      \usepackage{eso-pic,graphicx}
      \makeatletter
      \newcommand\BackgroundPicture[2]{
      \setlength{\unitlength}{1pt}
      \put(0,\strip@pt\paperheight){
      \parbox[t][\paperheight]{\paperwidth}{
      \vfill
      \centering\includegraphics[width=1\paperwidth,height=1\paperheight,angle=#2]{#1}
      \vfill
      }
      }
      }
      \makeatother

      \definecolor{background1}{rgb}{0.7176,0.8235,0.2784}
      `

      -Dopo \begin{document}-

      `
      \newpage
      \AddToShipoutPicture*{\BackgroundPicture{%
      Immagini/Sfondo2.jpg}{0}}
      {\color{red} .} % QUI VA INSERITO “background1'' NELLA PARENTESI GRAFFA AL POSTO DI “red'' per nascondere il puntino rosso con un puntino dello stesso colore dell'immagine, si da nasconderlo alla vista!!!
      \newpage
      `

      In pratica ho usato il comando `\newpage` per crearmi una pagina successiva a quella in cui volevo l’immagine a piena pagina, ma era necessario dover scrivere un qualcosa per poter generare una nuova pagina, e cosi ho scritto un semplice puntino di colore rosso (ben evidente), che poi ho colorato col colore piu’ vicino (background1) alla foto usata come sfondo, che ho definito nel preambolo, cosi da nasconderlo alla vista, ma mi ha permesso di avere un’immagine a piena pagina senza nulla scritto dentro e con una pagina a seguito su cui poter scrivere. Il problema rimasto e’ che , avendo comunque inserito dopo tutto pur sempre uno sfondo, mi si vede il numero di pagina che non vorrei vedere, e quindi il quesito…come nasconderlo?! (in piu’ rimane quel bordino bianco sul margine sinistro della pagina che non vorrei vedere).

      E’ un po’ contorta la descrizione, e non so se mi sono spiegato sufficientemente bene da farmi capire…..dovrei altrimenti allegare tutto il sorgente della sperimentazione fatta, ma forse non serve…

      I problemi da risolvere a conti fatti ora sono 2:

      1) Come eliminare quel bordino bianco sul margine sx della pagina contenente lo sfondo;

      2) Come eliminare la visione del numero della pagina in cui si e’ inserito uno sfondo per riuscire ad avere un’immagine a piena pagina su cui non voler scrivere nulla, ma continuare (o iniziare) a scrivere dalla pagina successiva.

      Ok, e’ tutto :wink:.

      Grazie a te e a tutti quelli che vorranno contribuire alla soluzione 😉

    • #27910
      Up
      0
      Down
      ::

      Ciao Mirko, grazie per la risposta.

      E’ necessario caricare qualche pacchetto particolare per quel comando?

      No, non è necessario. Ma perché fare tutta quella fatica? 🙂
      `\newcommand{\picturepage}[2]{%
      \newpage\thispagestyle{empty}\null
      \AddToShipoutPicture*{%
      \includegraphics[angle=#2,width=\paperwidth,totalheight=\paperheight]{#1}}%
      \newpage}`
      Con un semplice comando \picturepage{}{} ottieni di cambiare pagina e di riempirla con l’immagine. In questo modo però non ha senso dare un colore di sfondo, se la tua immagine non è trasparente (si può fare con png, non mi ricordo se jpg lo permette).

      Il bordino bianco era dovuto a spazi spuri nel tuo input, in particolare quello dopo la prima graffa aperta in
      `\put(0,\strip@pt\paperheight){
      \parbox[t][\paperheight]{\paperwidth}{
      …`
      Il fine riga conta come uno spazio che nella prima è rilevante (siamo in LR-mode), mentre nella seconda no (siamo all’inizio di una \parbox).

      Ciao
      Enrico

    • #27911
      Up
      0
      Down
      ::


      UUUuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 😀 !!!!!!!!!!!!!!!!!!!!!!!

      Ci sono riuscito!!!!!!!!

      http://www.fi.infn.it/pub/tex/doc/html/latex_46.html

      -Il preambolo l’ho impostato così:

      `
      documentclass[a4paper,11pt]{article}

      \usepackage[italian]{babel}
      \usepackage[latin1]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage{fancyhdr}
      \pagestyle{fancy}
      \usepackage{fancynum}
      \usepackage{graphicx}
      \usepackage{color}
      \usepackage{eso-pic,graphicx}
      \makeatletter
      \newcommand\BackgroundPicture[2]{
      \setlength{\unitlength}{1pt}
      \put(0,\strip@pt\paperheight){
      \parbox[t][\paperheight]{\paperwidth}{
      \vfill
      \centering\includegraphics[width=1\paperwidth,height=1\paperheight,angle=#2]{#1}
      \vfill
      }
      }
      }
      \makeatother

      \definecolor{background1}{rgb}{0.7176,0.8235,0.2784}
      `

      -Dopo \begin{document}, invece:

      `
      \newpage
      \thispagestyle{empty}
      \AddToShipoutPicture*{\BackgroundPicture{%
      Immagini/Sfondo5.jpg}{0}}
      {\color{red} .} % QUI VA INSERITO “background1'' NELLA PARENTESI GRAFFA AL POSTO DI “red''!!!
      \newpage
      `

      Mi mancavano i pacchetti nel preambolo 🙂 ! Avevi ragione Mirko, il numero è scomparso, insieme alla “testatina”!!………

      …mi dà però un solo warning, mentre prima era perfetto…mi dice:

      `
      Package Fancyhdr Warning: \headheight is too small (12.0pt):
      Make it at least 13.59999pt.
      We now make it that large for the rest of the document.
      This may cause the page layout to be inconsistent, however.
      `

      Non capisco come settare a 13.59999pt la “\headheight” (? è l’altezza della testatina?); sembra che sia settata su 12.0pt…ma dove risulta? Dove andare ad agire?

      Rimane ora anche solo da vedere come eliminare il bordo bianco al margine sx della pagina contenente lo sfondo-immagine… 🙂

      Bene, sembra che la cosa sia riuscita!………ma ci sarebbero anche altri metodi più mirati allo scopo?

      Un saluto a te Mirko e al forum

      Riccardo

    • #27912
      Up
      0
      Down
      ::

      UUUuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 😀 !!!!!!!!!!!!!!!!!!!!!!!

      Ci sono riuscito!!!!!!!!

      Ma scusa, perché usare un milione circa di comandi inutili quando la cosa si può fare in modo molto più semplice? 🙄 E senza inserire punti da mascherare.

      E perché non leggi i messaggi? Ti avevo pure spiegato da dove veniva fuori “il bordino”: 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.

      La questione di \headheight è una FAQ: il pacchetto fancyhdr ti sta avvisando che hai riservato troppo poco spazio per la testatina:
      `\setlength{\headheight}{14pt}`

      L’aggiunta dei pacchetti babel, fontenc, inputenc, fancyhdr e fancynum non ha NULLA a che vedere con il tuo problema, fra l’altro.

      Ciao
      Enrico

    • #27913
      Up
      0
      Down
      ::


      Bravissimo Enrico :)!!!

      Scusami!!! Non era voluta la cosa…non mi sono proprio reso conto della presenza della tua risposta…..forse ero così contento 🙂 di aver trovato quella soluzione, che ho aggiunto la news al topic senza leggere prima altre risposte :P…sbadato :wink:!!!

      Grandissimo!!!

      `
      \put(0,\strip@pt\paperheight){%
      \parbox[t][\paperheight]{\paperwidth}{
      `

      Ho scritto così (con quel simbolo % a fine riga di “\put(0,\strip@pt\paperheight){%”), per vedere se era la giusta l’interpretazione di quello che avevi detto, e la cosa è riuscita: il borbino bianco non c’è più :)! Ma dove si apprendono queste cose tecniche che mi hai detto:

      Il fine riga conta come uno spazio che nella prima è rilevante (siamo in LR-mode), mentre nella seconda no (siamo all’inizio di una \parbox).

      Grazie mille per le tue indicazioni!!!

      Ho annullato anche tutta quella metodica che avevo escogitato (pero’ per un novello come me e’ stata comunque una grande soddisfazione ;)), ed ho usato invece quel nuovo comando che hai ideato…è una cosa che devo ancora apprendere quella di creare nuovi comandi…stavo cercando di interpretarlo… ma quel \null a cosa serve? Come avere poi una panoramica di tutti i possibili comandi (sia generici sia di un dato pacchetto) disponibili e delle sue opzioni? Non conoscevo il comando

      `\setlength{\headheight}{14pt}`

      (ps. avevi scritto “\setlenght” invece di “\setlength” 😉 e la cosa non funzionava …piccola svista fatale di battitura ;)…..per chi volesse usare il copia incolla di questo topic per risolvere lo stesso problema :))

      e neanche l’opzione

      `totalheight=`

      usata in

      `\includegraphics[angle=#2,width=\paperwidth,totalheight=\paperheight]`

      ? Esiste anche un `totalwidth=` ?

      I pacchetti

      `
      \usepackage[italian]{babel}
      \usepackage[latin1]{inputenc}
      \usepackage[T1]{fontenc}
      `

      li avevo inseriti perchè l’esperimento che ho fatto a casa l’ho descritto in tutti i passaggi che ho eseguito, come promemoria e piccolo manuale personale :), per questo ho introdotto anche quei pacchetti, mentre

      `
      \usepackage{fancyhdr}
      \pagestyle{fancy}
      \usepackage{fancynum}
      `

      mi sembravano necessari per usare quel “\thispagestyle{empty}” che io non ho introdotto nel preambolo ma dopo “\begin{document}” in quella metodica col puntino poi colorato per nasconderlo, al fine di nascondere il numero di pagina…è stato infatti il primo consiglio di Mirko quello, ma non mi ha funzionato, finché non ho trovato quel link http://www.fi.infn.it/pub/tex/doc/html/latex_46.html. Il comando “\thispagestyle{empty}” deve essere usato sempre e solo nel preambolo per non vedere l’ausilio di pacchetti particolari per funzionare?

      Ho visto che “\usepackage{fancynum}” non serviva proprio, mentre “\usepackage{fancyhdr}” servirebbe per usare il successivo “\pagestyle{fancy}”, che serve appunto per ottenere la testatina nel layout di pagina, ma bisogna appunto precisare (come hai detto tu) quel comando “\setlength{\headheight}{14pt}” per eliminare l’avviso di “Package Fancyhdr Warning” dato altrimenti al momento della compilazione!

      Tutto risolto ora! 🙂 …e ho capito anche un po’ di cosette…:) Ma dimmi per quelle altre cose che ti ho chiesto:

      -1-

      Ma dove si apprendono queste cose tecniche che mi hai detto:
      Il fine riga conta come uno spazio che nella prima è rilevante (siamo in LR-mode), mentre nella seconda no (siamo all’inizio di una \parbox).

      -2-

      Quel \null a cosa serve?

      -3-

      Esiste anche un “totalwidth=” da usare in “\includegraphics[angle=#2,width=\paperwidth,totalheight=\paperheight]”?

      -4-

      Come avere una panoramica di tutti i possibili comandi (sia generici sia di un dato pacchetto) disponibili e delle sue opzioni?

      🙂 Grazie Enrico, a presto

      Riccardo

    • #27914
      Up
      0
      Down
      ::

      -1- Ma dove si apprendono queste cose tecniche che mi hai detto:
      Il fine riga conta come uno spazio che nella prima è rilevante (siamo in LR-mode), mentre nella seconda no (siamo all’inizio di una \parbox).

      Si apprendono nelle guide. La prima cosa da ricordare è che un fine riga conta come uno spazio; se questo spazio è “visto” mentre TeX sta componendo un capoverso o una box (\mbox, \fbox e simili), diventerà uno spazio nell’output. Se lo spazio è “visto” tra capoversi (e l’inizio di una \parbox è essere tra capoversi) sarà ignorato. Se lo spazio segue un nome di comando formato da lettere, è ignorato già in fase di lettura. Buona norma è mettere sempre un % dopo una parentesi graffa aperta o chiusa se si va immediatamente a capo.

      -2- Quel \null a cosa serve?

      Produce una cosa invisibile che però rende una pagina non vuota. Se dai `\newpage\thispagestyle{empty}\newpage`
      non ottieni una pagina vuota. Con
      `\newpage\thispagestyle{empty}\null\newpage`
      la ottieni perché quel \null la rende non vuota (pure se non si vede nulla). Sostituisce quel punto che volevi colorare per renderlo invisibile ed è molto meglio, no?

      -3- Esiste anche un “totalwidth=” da usare in “\includegraphics[angle=#2,width=\paperwidth,totalheight=\paperheight]”?

      Nella tua macro la chiave angle stava al posto sbagliato. Il comando valuta le opzioni da sinistra a destra; con
      `\includegraphics[width=\paperwidth,height=\paperheight,angle=90]{…}`
      l’immagine prima viene scalata e poi ruotata: ovviamente non vuoi questo. Quando però si prescrive la rotazione all’inizio, occorre usare totalheight e non height per vari motivi, il principale è per un antico bug di graphics. 🙁

      Occorre sapere che possiamo ruotare l’immagine non solo rispetto all’origine (in basso a sinistra). Un’immagine può estendersi anche sotto il punto di riferimento che sta sulla “linea di base”; height si riferisce a quanto l’immagine si estende sopra la linea di base, depth a quanto sta sotto; totalheight si riferisce alla somma. Nel caso di immagini ruotate è necessario usare totalheight per scalare.

      -4- Come avere una panoramica di tutti i possibili comandi (sia generici sia di un dato pacchetto) disponibili e delle sue opzioni?

      Leggendo le guide. Quella di Lorenzo è ottima, poi ce n’è un’altra, forse non altrettanto valida :wink:, sui principali pacchetti. La documentazione su graphicx si trova in grfguide.pdf (sul tuo sistema o su CTAN).

      Ciao
      Enrico

    • #27915
      Up
      0
      Down
      ::


      Grazie Enrico.
      …ci sono ancora non poche cose 🙂 su cui nascono domande in questa paginata…..se ne avrai tempo e voglia, magari, continuerò a chiarirmi tutti gli aspetti di quanto è scritto qui… lo prendo come base per continuare a conoscere un po’ di più 😉 …Grazie!…ora me ne vado a letto data l’ora (4am) :D. Saluti

      Riccardo

    • #27916
      Up
      0
      Down
      ::

      -1- Ma dove si apprendono queste cose tecniche che mi hai detto:
      Il fine riga conta come uno spazio che nella prima è rilevante (siamo in LR-mode), mentre nella seconda no (siamo all’inizio di una \parbox).

      Si apprendono nelle guide. La prima cosa da ricordare è che un fine riga conta come uno spazio; se questo spazio è “visto” mentre TeX sta componendo un capoverso o una box (\mbox, \fbox e simili), diventerà uno spazio nell’output. Se lo spazio è “visto” tra capoversi (e l’inizio di una \parbox è essere tra capoversi) sarà ignorato. Se lo spazio segue un nome di comando formato da lettere, è ignorato già in fase di lettura. Buona norma è mettere sempre un % dopo una parentesi graffa aperta o chiusa se si va immediatamente a capo.

      -2- Quel \null a cosa serve?

      Produce una cosa invisibile che però rende una pagina non vuota. Se dai `\newpage\thispagestyle{empty}\newpage`
      non ottieni una pagina vuota. Con
      `\newpage\thispagestyle{empty}\null\newpage`
      la ottieni perché quel \null la rende non vuota (pure se non si vede nulla). Sostituisce quel punto che volevi colorare per renderlo invisibile ed è molto meglio, no?

      -3- Esiste anche un “totalwidth=” da usare in “\includegraphics[angle=#2,width=\paperwidth,totalheight=\paperheight]”?

      Nella tua macro la chiave angle stava al posto sbagliato. Il comando valuta le opzioni da sinistra a destra; con
      `\includegraphics[width=\paperwidth,height=\paperheight,angle=90]{…}`
      l’immagine prima viene scalata e poi ruotata: ovviamente non vuoi questo. Quando però si prescrive la rotazione all’inizio, occorre usare totalheight e non height per vari motivi, il principale è per un antico bug di graphics. 🙁

      Occorre sapere che possiamo ruotare l’immagine non solo rispetto all’origine (in basso a sinistra). Un’immagine può estendersi anche sotto il punto di riferimento che sta sulla “linea di base”; height si riferisce a quanto l’immagine si estende sopra la linea di base, depth a quanto sta sotto; totalheight si riferisce alla somma. Nel caso di immagini ruotate è necessario usare totalheight per scalare.

      -4- Come avere una panoramica di tutti i possibili comandi (sia generici sia di un dato pacchetto) disponibili e delle sue opzioni?

      Leggendo le guide. Quella di Lorenzo è ottima, poi ce n’è un’altra, forse non altrettanto valida :wink:, sui principali pacchetti. La documentazione su graphicx si trova in grfguide.pdf (sul tuo sistema o su CTAN).

      Ciao
      Enrico

      Ciao Enrico, volevo ringraziarti per i link alle guide e per le spiegazioni che mi hai dato…..quella cosa del \null è una genialata, visto che con un comando così piccolo sintetizzo esattamente tutti quei passaggi che avevo escogitato 😉 Grazie! Conoscevo la guida di Lorenzo, mentre la tua mi mancava: credo sia proprio la risposta alla mia esigenza, almeno per i pacchetti da te trattati :), Grazie!!

      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!!

      Buona serata, a presto

      Riccardo

    • #27917
      Up
      0
      Down
      ::


      ps: la pagina del pdf ArteLaTeX è 174…152 è la pagina che risulta nella testatina.

    • #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

    • #27919
      Up
      0
      Down
      ::

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

      [quote]
      …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[/quote]

      Quindi, ad esempio, se io scrivo:

      -Nel preambolo-
      `
      \newcommand{\pippo}[4]{\textbf{#1} \textit{#2}, \normalfont{#3}, \normalfont{#4}}
      `

      -dopo \begin{document}-
      `
      \pippo{Nome}{Cognome}{Città}{Telefono}
      `

      come output ottengo:

      “\textbf{Nome} \textit{Cognome}, \normalfont{Città}, \normalfont{Telefono}”?…nella parentesi quadra devo cioè indicare il numero totale di variabili definite?

    • #27920
      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}”? 🙂

    • #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

    • #27922
      Up
      0
      Down
      ::


      Va bene, credo sia chiaro ora.
      Grazie ancora, Enrico.

      Buon pomeriggio,

      Riccardo

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

Go to top