Newsgroup: it.comp.software.tex
Titolo: comando breve...

Ciao.
Mi ritrovo a dover usare diverse volte un determinato ambiente,
ed ho provato a definire un nuovo comando che lo aprisse e lo
chiudesse, semplicemente per rendere piu' leggibile e piu'
comodo da scrivere il documento; in questo modo:
\newcommand{\jp}[1]{%
  \begin{CJK*}{JIS}{song}\CJKtilde#1\end{CJK*}}
che funziona, tranne la prima volta!
Cioe', la prima volta che lo uso nel documento non funziona
(come se non ci fosse proprio)
mentre le volte successive va che e' una meraviglia.
Cio' non capita se al posto di \jp ci metto la sua definizione.
Quindi immagino non sia tanto corretto fare come ho fatto io...
Che mi suggerite?
Grazie mille,
Guldo

During a dark and stormy night *Guldo K* wrote:
:: Mi ritrovo a dover usare diverse volte un determinato ambiente,

Forse è un comando già esistente.
Hai provato a definirlo con \providecommand prima?
Altre alternative non saprei.
Ci vorrebbe un documento minimale come esempio.
-- 
*Emanuele*
*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*
  Gruppo Utilizzatori Italiani di TeX
*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*
  TUG Italiano - 
www.GuIT.sssup.it
*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*

  Ci vorrebbe un documento minimale come esempio.
Pronti:
\documentclass{memoir}
\chapterstyle{plain}
\renewcommand{\chaptername}{Lezione}
\setcounter{chapter}{32}
\usepackage{booktabs,multirow}
\usepackage{CJK}
\usepackage[CJK, overlap]{ruby}
\renewcommand{\rubysep}{-0.3ex}
\providecommand{\jp}[1]{%
  \begin{CJK*}{JIS}{song}\CJKtilde#1\end{CJK*}}
\begin{document}
\end{document}
Se nel document metto:
\begin{CJK*}{JIS}{song}\CJKtilde
xxx
\end{CJK*}
\begin{CJK*}{JIS}{song}\CJKtilde
yyy
\end{CJK*}
(dove xxx e yyy sono scritte in caratteri jappo)
tutto fila liscio;
se invece lo sostituisco con:
\jp{xxx}---\jp{yyy}
succede che xxx non si vede proprio nel dvi.
Grazie,
Guldo


Una scommessa a occhi chiusi: l'ambiente CJK modifia qualche catcode. 
Prova qualcosa come:
\newcommand{\jp}{\begin{CJK*}{JIS}{song}\nextjp}
\newcommand{\nextjp}[1]{\CJKtilde#1\end{CJK*}
-- 
Giuseppe "Oblomov" Bilotta
Can't you see
It all makes perfect sense
Expressed in dollar and cents
Pounds shillings and pence
                  (Roger Waters)

  Una scommessa a occhi chiusi: l'ambiente CJK modifia qualche catcode.
A quanto pare hai ragione.
La tua soluzione fila che e' una bellezza!!! :-)
GRANDE!
Grazie MILLE Giuseppe!
Guldo

 A quanto pare hai ragione.
e ne dubitavi ? :DD
-- 
- Tu sai volare vecchio ?
- Che sciocchezza !! I lupi non volano. 
  Gli uccelli volano,i pesci nuotano e 
    i lupi se ne stanno con i piedi perterra!

 e ne dubitavi ? :DD
Uè, anch'io canno :)
Ma grazie per la stima :)


\newcommand{\nextjp}[1]{\CJKtilde#1\end{CJK*}
Vabbe', ma ci spieghi, in dettaglio, perché funziona? Capisco che
l'espansione viene ritardata, ma non mi riesce di figurarmi quando
esattamente avviene e che rilevanza abbia quello che fa CJK (non dovrebbe
essere attivo al momento dell'esecuzione della sequenza, non in fase di
espansione?).
Non mi piace molto anche l'idea di un \begin terminato da qualcosa di
diverso che da un \end: funzionerebbe lo stesso, se scrivessi cosě?:
\newcommand{\jp}{\begin{CJK*}{JIS}{song}\nextjp\end{CJK*}}
\newcommand{\nextjp}[1]{\CJKtilde#1}
O, detto in altro modo, qual č il catcode che da fastidio?
Ciao.

 O, detto in altro modo, qual è il catcode che da fastidio?
Non so come funziona CJK quindi non so esattamente quale catcode dia 
fastidio; ma che t'importa il fatto che l'espansione avvenga in due 
tempi invece che tutto nella stessa macro? "non ti piace", va be', ma 
è uno dei 'trucchi' standard necessari nel TeX (evitabili con e-TeX 
usando \scandtokens ...) Non so quanto siano diffusi nel LaTeX 
(sicuramente lo sono più di quanto immagini tu :)), ma nel ConTeXt 
funziona praticamente tutto così. È la maledizione/benedizione del 
TeX, impara a viverci :)


immagini tu :)), ma nel ConTeXt funziona praticamente tutto così.
E questo è precisamente il motivo per cui, leggendo il codice del formato
LaTeX, non ci si capisce nulla. E anche intervenire su una classe standard,
come book, è un rompicapo vulcaniano di nono livello.
Se sono necessari, è evidente che userò anche trucchi del genere (per
necessità si fanno tante cose che non piacciono e che comporteranno futuri
problemi), ma la necessità di questi trucchi è l'ennesima dimostrazione di
quale inferno possa essere un linguaggio macro, e quanto inappropriata sia
stata la scelta di questo tipo di linguaggio per TeX.
Ciao.

 stata la scelta di questo tipo di linguaggio per TeX.
Non sei l'unico a pensarla così. Anche David Kastrup (che merita 
certamente il titolo di Gran Maestro del TeX e ha una conoscenza 
molto approfondita di tutti i meccanismi di espansione del TeX) non 
lesina critiche, eppure è abbastanza ovvio che questo stesso 
strumento permette di fare cose che in un qualsiasi altro sistema 
sarebbero impossibili (qualche esempio viene fornito da Kastrup 
stesso). In altre parole, è uno strumento come un altro con i suoi 
pregi ed i suoi difetti. Bisogna solo imparare a conoscerne i punti 
di forza ed a gestire i suoi punti deboli.


ed a gestire i suoi punti deboli.
Infatti non ho particolari sensi di colpa o reazioni di disgusto ad usare
TeX.
Ciao.

 credo non avrò mai occasione di usare.
Scusa, fatto confusione :)
A proposito, ti sei scaricato "TeX by topic"? Eccellente manuale 
(molto più leggibile del TeXbook ...)


(molto più leggibile del TeXbook ...)
Ahimè, arriva tardi, nel senso che TeXbook me lo sono già comprato e
studiato. Non che, s'intende, abbia capito tutto o, a volte penso, qualcosa,
ma ho fatto quanto meno un onesto tentativo. Devo dire che, a parte
l'assurda pretesa di capire, l'ho trovato anche leggibile e a tratti financo
gustoso.
Ti ringrazio comunque della segnalazione; ho giusto scaricato "TeX by
topic", chissà che non risolva anche il problema di capire (ed essere in
grado di utilizzare quello che si è capito: "Non v'ha scienza sanza lo
ritener l'avere inteso").
Ciao.

 ritener l'avere inteso").
Mme piace. Chi è, Galileo?


Mme piace. Chi č, Galileo?
Dante. Un po' a memoria, la lezione corretta potrebbe essere leggermente
diversa.
Ciao.

    \begin{CJK*}{JIS}{song}\CJKtilde#1\end{CJK*}}
Vi riscrivo auto-quotandomi giusto per dovere di cronaca...
Mi spiego:
Se vi ricordate, avevo iniziato cosi' il thread, ed ho poi trovato
la soluzione grazie a Giuseppe.
("l'ambiente CJK modifica qualche catcode...")
Ora volevo solo dirvi che ho le idee un po' piu' chiare in merito.
Il fatto e' che io facevo un errore di fondo: usavo l'ambiente
CJK solo ed esclusivamente ogni qual volta desideravo inserire del
testo in jappo. Del tipo:
Questo \`e un po' di jappo: \begin{CJK*}.....\end{CJK*} molto utile.
Pero' mi sono accorto che facendo cosi' dava numerosi problemi, oltre
a quello di 10 giorni fa; ad esempio, pur funzionando nell'ambiente
tabular, non funziona in tabularx, e nemmeno in \href.
Prima pensavo che fosse questione di incompatibilita', ma poi,
smanettandoci, ho realizzato che mentre
%%%
\begin{tabularx}{5cm}{X}
\begin{CJK*}{JIS}{song}\CJKtilde
<jappo>\\
\end{CJK*}
\end{tabularx}
%%%
questo non va, quest'altro:
%%%
\begin{CJK*}{JIS}{song}\CJKtilde
\begin{tabularx}{5cm}{X}
<jappo>\\
\end{tabularx}
\end{CJK*}
%%%
funziona egregiamente.
In altre parole, si riesce a mettere ambienti all'interno di CJK,
ma non viceversa.
Analogamente per \href.
Il passaggio che mi mancava e' che non c'e' nessun problema a mettere
caratteri latini all'interno di CJK.
Credo che si potrebbe addirittura fare:
\begin{document}
\begin{CJK*}{JIS}{song}\CJKtilde
...etc etc...
\end{CJK*}
\end{document}
Perche' vi dico tutto cio'?
Non lo so, PERO' ho ragione...
... e i fatti mi cosano! :-)
Guldo