Newsgroup: it.comp.software.tex
Titolo: Parametri nella definizione di ambiente

Non riesco a inserire i parametri come voglio nella definizione, o
meglio, nella parte riguardante \end<<environemt>>
Ho trovato veramente poco o niente sui vari manuali.
Se faccio cosi':
| \newenvironment{DeKcitazione}[3]%
| {
|   \footnote{\textsc{#1}, \char`\"{}#2\char`\"{} (#3)}
|   \begin{list}{}{%
|     \setlength\topsep{0pt}%
|     \addtolength{\leftmargin}{0.66\columnwidth}
|     \setlength\parsep{0pt plus 1pt}%
|     \itshape
|   }
|   \item[]
| }
| {\end{list}}
funziona, ma come si puo' capire, il riferimento dovrebbe trovarsi a
valle della citazione e non a monte.
Ingenuamente, faccio un copincolla:
| \newenvironment{DeKcitazione}[3]%
| {
|   \begin{list}{}{%
|     \setlength\topsep{0pt}%
|     \addtolength{\leftmargin}{0.66\columnwidth}
|     \setlength\parsep{0pt plus 1pt}%
|     \itshape
|   }
|   \item[]
| }
| {\end{list}\footnote{\textsc{#1}, \char`\"{}#2\char`\"{} (#3)}}
ma mi dice che il numero dei parametri e' sbagliato.
Dov'e' l'errore? Nella definizione o devo cambiare il modo in cui
richiamo l'ambiente?
Byez
P.S. Si', in effetti e' un "LyXParagraphIndent" modificato. Non sono
ancora cosi' esperto da fare certe cose da solo...
P.P.S. Si', in effetti, ho risolto in un altro modo che e' anche
piu' corretto se vogliamo, ma resta la curiosita', anche perche'
non e' detto che prima o poi non mi serva
un DeK che se e' vero che sbagliando si impara...
-- 
DeK - Delirio & Kaos
FAN n.1 del CrossPost e dell' OT :)
Visita One Big Mob - 
http://dek.hey.to
 [
http://dek.interfree.it
]

d...@interfree.it
 scrive:

Non puoi usare i parametri nella parte \end, cioe nel secondo
argomento di \newenvironment. Il trucco c'e, ed e di passare
i parametri dalla parte \begin, dove li puoi usare.
\newcommand{\DeKprimo}{}
\newcommand{\DeKsecondo}{}
\newcommand{\DeKterzo}{}
\newenvironment{DeKcitazione}[3]%
{%
  \renewcommand{\DeKprimo}{#1}%
  \renewcommand{\DeKsecondo}{#2}%
  \renewcommand{\DeKterzo}{#3}%
  \begin{list}{}{%
    \setlength\topsep{0pt}%
    \addtolength{\leftmargin}{0.66\columnwidth}%
    \setlength\parsep{0pt plus 1pt}%
    \itshape
  }
  \item[]
}
{\end{list}\footnote{\textsc{\DeKprimo}, 
  \char`\"{}\DeKsecondo\char`\"{} (\DeKterzo)}}
All'uscita dall'ambiente, le tue macro \DeK... sono 
nuovamente vuote. Le puoi usare quante volte vuoi.
Sei sicuro di quel \char`\"?
Ciao
Enrico

Qualche spiegazione su cosa sono effettivamente gli ambienti in 
LaTeX. Un ambiente è internamente definito da una coppia di macro 
(\ambiente, \endambiente). Quando si definisce un ambiente, i due 
gruppi vengono assegnati rispettivamente ad \ambiente ed a 
\endambiente.
\begin legge il proprio parametro (il nome dell'ambiente), si 
assicura che esista la macro \ambiente, imposta alcune variabili 
interne che tengono conto dell'annidamento degli ambienti e di quando 
questi cominciano (per i messaggi di errore), inzia un gruppo e 
chiama \ambiente.
\end fa poi il lavoro di chiusura, chiamando \endambiente, chiudendo 
il gruppo, ed aggiustando le variabili interne di controllo dello 
stack degli ambienti.
Questo vuol dire che i parametri dell'ambiente sono in effetti 
parametri di \ambiente, ovvero della macro definita nella prima metà; 
se vuoi usarli in \endambiente devi salvarli:
\newenvironment{DeKcitazione}[3]%
{
  \def\DeKnome{#1}%
  \def\DeKtitolo{#2}%
  \def\DeKanno{#3}%
  \begin{list}{}{%
    \setlength\topsep{0pt}%
    \addtolength{\leftmargin}{0.66\columnwidth}%
    \setlength\parsep{0pt plus 1pt}%
    \itshape
  }
  \item[]
}
{\footnotex{\textsc{\DeKnome}, ``\DeKtitolo'' (\DeKanno)}%
 \end{list}}
(Era questa la soluzione alternativa che avevi trovato?)

-- 
Giuseppe "Oblomov" Bilotta
Axiom I of the Giuseppe Bilotta
theory of IT:
Anything is better than MS

Sei sicuro di quel \char`\"?
Non lo so. L'ha messo LyX. C'e' problema se uso direttamente i
doppi apici?
[Dopo aver provato]
Boe, a me funziona... Forse usando qualche package particolare possono
sorgere problemi?
Byez
un "DeK":


(Era questa la soluzione alternativa che avevi trovato?)
No... Avevo definito un comando che stampa la fonte della citazione
e viene richiamato separatamente. In questo modo si puo' scegliere
di non visualizzare alcuna fonte se non lo si desidera.
Ora ho inserito questa soluzione definendo un ulteriore ambiente per
dividere i compiti: uno stampa solo la citazione, l'altro richiama
il primo per la citazione e poi stampa la nota a pie' di pagina.
Byez
un DeK dell'eterna giovinezza


 Mi sembra strano come comportamento.
Invece è normale; tutte le definizioni in TeX sono locali e non 
globali; gli ambienti iniziano gruppi, quindi alla chiusura 
dell'ambiente tutte le definizioni vengono annullate.


 effettivamente usati, cio' sarebbe un problema?
Il punto cruciale è che quello che tu vedi come ambiente (unico) in 
TeX sono due macro distinte e separate, e non vi è pertanto nessun 
rapporto tra i parametri dell'una e quelli dell'altra.


 Spero di essermi spiegato meglio.
Perché fare una cosa che rallenta notevolmente l'esecuzione, aumenta 
le richieste di memoria, che nel 99.99% dei casi non serve e che 
quando serve si può fare facilmente a manina? :)


quando serve si puň fare facilmente a manina? :)
Sai essere molto convincente... :)
Byez
un DeK e le "porcherie concettuali"[cit]
