Newsgroup: it.comp.software.tex
Titolo: Comando condizionale

Ho delle schede distinte dal testo,
contenute in un ambiente shaded.
Utilizzando attualmente classicthesis
ed essendo queste schede \section
con ulteriori \subsection e \subsubsection,
volevo che i titoli risultassero in sanserif
anziché in corsivo, com'è invece il default.
Poiché si tratta di una trentina di schede
contenute in oltre venti capitoli,
potrei definire un \newcommand per ciascun
tipo di sezionamento e quindi
avere la formattazione desiderata.
Ma non sarebbe possibile definire
un comando condizionale che impone
a quei comandi di sezionamento
di avere una determinata formattazione
quando e solo quando appaiono nell'ambiente shaded?
Prima di prendermi l'ennesima sgridata, :-)
preciso che intanto volevo capire se sussiste
la possibilità di un'operazione di questo tipo.
Perciò al momento solo teoria. Poi,
eventualmente, passo al codice...
Grazie
M.

 eventualmente, passo al codice...
� certamente possibile, in astratto. Ci possono essere
difficolt� TeXniche, dovute al modo con cui ClassicThesis
imposta i titoli.
Trovi la definizione alle righe 359--366 (la riporto in modo
pi� umano, il comando \titleformat ha cinque argomenti):
\titleformat{\section}
  {\relax}
  {\textsc{\MakeTextLowercase{\thesection}}}
  {1em}
  {\spacedlowsmallcaps}
\titleformat{\subsection}
  {\relax}
  {\textsc{\MakeTextLowercase{\thesubsection}}}
  {1em}
  {\normalsize\itshape}
\titleformat{\subsubsection}
  {\relax}
  {\textsc{\MakeTextLowercase{\thesubsubsection}}}
  {1em}
  {\normalsize\itshape}
\titlespacing*{\section}
  {0pt}
  {1.25\baselineskip}
  {1\baselineskip} 
\titlespacing*{\subsection}
  {0pt}
  {1.25\baselineskip}
  {1\baselineskip}
e penso che tu possa inserire le definizioni modificate nella
definizione del tuo ambiente per le schede.
Non resta che provare.
Ciao
Enrico

 Non resta che provare.
Boh, ovvoi che non funzionava.
Come primo tentativo ho modificato
il meno possibile:
==============================================================
\documentclass[numbers=noenddot,headinclude,footinclude,%
BCOR=0mm,cleardoublepage=empty]{scrartcl}
\usepackage[nochapters]{classicthesis-ldpkg}
\usepackage[pdfspacing,eulerchapternumbers,beramono,%
nochapters,linedheaders]{classicthesis}
\usepackage[utf8x]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage{framed}
\definecolor{shadecolor}{gray}{0.90}
\newenvironment{card}
{
\begin{shaded}
\titleformat{\section}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesection}}}
  {1em}
  {\textbf}
\titleformat{\subsection}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesubsection}}}
  {1em}
  {\normalsize}
\titleformat{\subsubsection}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesubsubsection}}}
  {1em}
  {\normalsize}
\end{shaded}
}
\begin{document}
\begin{card}
\section{Lorem ipsum dolor}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam lectus.
Donec id dolor. Pellentesque semper feugiat lacus.
\subsection{Sed dapibus}
Sed dapibus. Nunc pulvinar felis a nulla. Integer tempus feugiat libero.
Aliquam scelerisque. Cras commodo venenatis leo. In ac eros.
\subsubsection{Ut nec neque}
Ut nec neque a nisi sagittis rhoncus. Sed vulputate. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
\section{Cras fermentum erat}
Cras fermentum erat. Proin iaculis, massa sed scelerisque posuere, magna
justo
malesuada neque, et placerat quam tellus vel mi. Pellentesque dui nulla,
sollicitudin a, sodales tristique, auctor eget, enim.
\end{card}
\end{document}
==============================================================
e in sede di compilazione ottengo in errore di cui non c'è
in pratica traccia in rete:
=====================================================
! Package utf8x Error: Character160appearedalone.
See the utf8x package documentation for explanation.
Type  H <return>  for immediate help.
 ...
l.38 \begin{card}
=====================================================
M.

 =====================================================
C'erano caratteri spuri. Questo funziona:
\documentclass[numbers=noenddot,headinclude,footinclude,%
BCOR=0mm,cleardoublepage=empty]{scrartcl}
\usepackage[nochapters]{classicthesis-ldpkg}
\usepackage[pdfspacing,eulerchapternumbers,beramono,%
  nochapters,linedheaders]{classicthesis}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[italian]{babel}
\usepackage{framed}
\definecolor{shadecolor}{gray}{0.90}
\newcommand{\changesections}{%
 \titleformat{\section}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesection}}}
  {1em}
  {\textbf}%
 \titleformat{\subsection}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesubsection}}}
  {1em}
  {\normalsize\sffamily}%
 \titleformat{\subsubsection}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesubsubsection}}}
  {1em}
  {\normalsize\sffamily}%
}
\newenvironment{card}
  {\changesections\begin{shaded}}
  {\end{shaded}}
\begin{document}
\begin{card}
\section{Lorem ipsum dolor}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam 
lectus. Donec id dolor. Pellentesque semper feugiat lacus.
\subsection{Sed dapibus}
Sed dapibus. Nunc pulvinar felis a nulla. Integer tempus feugiat libero.
Aliquam scelerisque. Cras commodo venenatis leo. In ac eros.
\subsubsection{Ut nec neque}
Ut nec neque a nisi sagittis rhoncus. Sed vulputate. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
\section{Cras fermentum erat}
Cras fermentum erat. Proin iaculis, massa sed scelerisque posuere, magna
justo malesuada neque, et placerat quam tellus vel mi. Pellentesque dui 
nulla, sollicitudin a, sodales tristique, auctor eget, enim.
\end{card}
\end{document}
Ciao
Enrico

C'erano caratteri spuri. Questo funziona:
Ottimo. Ho aggiunto \sffamily a \section per avere tutto in sanserif.
Poi ho tolto, però non so se a torto, \MakeTextLowercase,
che mi pareva inutile.
Ma per non copiare e capirci un po' di più: perché il duplice passaggio
prima a \newcommand e quindi a \newenvironment?
E poi: a che cosa serve qui \relax?
Da ultimo: girovagando in rete e cercando voci quali \newenvironment
ho trovato spiegazioni di poche righe in alcune guide. C'è una trattazione
decente, che faccia capire davvero le procedure?
Grazie mille
M.

 decente, che faccia capire davvero le procedure?
Dipende da che cosa intendi. Alcuni esempi li trovi qui
http://profs.sci.univr.it/~gregorio/introtex.pdf
Ciao
Enrico

 
http://profs.sci.univr.it/~gregorio/introtex.pdf
Lo avevo scaricato tempo fa. Qui ci addentriamo nel TeX...
Ed è già dura così!
Un'ultima cosa:
se nell'ambiente di prima volessi escludere la numerazione
(infatti sono schede inserite nei capitoli e non devono
seguire la numerazione dei paragrafi)?
In origine io avevo fatto il classico:
=====================================================================
\addcontentsline{toc}{subsection}{\textsf{Scheda n. 20: Un esempio di
/etc/lilo.conf}}
\begin{shaded}
\subsection*{\textsf{\normalsize{Scheda n. 20} \\
\large{Un esempio di /etc/lilo.conf}}}
=====================================================================
ma se metto nel codice di prima l'asterisco, per cui ho:
=======================================================
 \titleformat{\section*}
  {\relax}
  {\texttt{\MakeTextLowercase{\thesection}}}
  {1em}
  {\textbf}%
=======================================================
di nuovo non funziona:
=================================
! Missing \endcsname inserted.
<to be read again>
                   \let
l.35 \begin{card}
=================================
In rete trovo:
13.23 Missing \endcsname inserted 
This is a TeX error rather than a LaTeX error which makes it harder to
determine the cause, however it can be caused by placing a backslash in
front of the name of an environment. (Remember that environment names do
not contain a backslash.)
ma in questo caso mi pare che la definizione non serva a nulla...
Grazie
M.

 scrive:

Mi pare ovvio che cos� non funzioni. Non ho ben capito che cosa
ti serve, se devo dire la verit�.
Le tue schede sono divise in sezioni e sottosezioni che non vuoi
numerare? Vuoi che queste sezioni vadano nell'indice? E le sottosezioni?
Se non vuoi che queste pseudosezioni siano numerate e vadano 
nell'indice, ovviamente basta usare \section*, \subsection* e 
\subsubsection* nell'ambiente "card".
Se ti serve mettere nell'indice il titolo della sezione (come
titolo della scheda), puoi definire un comando apposito:
\newcommand{\cardtitle}[1]{%
  \phantomsection
  \addcontentsline{toc}{section}{#1}%
  \section*{#1}}
e magari anche
\newcommand{\cardsection}{\subsection*}
\newcommand{\cardsubsection{\subsubsection*}
e scriverai
\begin{card}
\cardtitle{Lorem Ipsum}
aaa
\cardsection{xyz}
bbb
\cardsubsection{xxx}
ccc
\end{card}
Ciao
Enrico

 \subsubsection* nell'ambiente "card".
Le schede allo stato attuale erano \subsection asteriscate,
e prevedevano la divisione in \subsubsubsection
perché erano all'interdo di sezioni dei capitoli.
Adesso avevo una struttura di questi tipo:
====================================================================
\addcontentsline{toc}{subsection}{\texttt{Scheda n. 1: Condivisioni con
BitTorrent}}
\begin{shaded}
\subsection*{\texttt{\textbf{\normalsize{Scheda n. 1} \\
\large{Condivisioni con BitTorrent}}}}
Fino a qualche anno fa, in Internet dominava una netta distinzione
fra i server e i client. I server fornivano contenuti che potevano
essere scaricati dai client. Ciò era dovuto anche ai limiti oggettivi
della banda: .......
\subsubsection{La «filosofia» di BitTorrent}
La «filosofia» del p2p risiede nel fatto che chi è connesso per scaricare
qualcosa può rendere disponibile quello che ha già scaricato, o altro
materiale che risiede nel suo computer:
====================================================================
Vorrei che il titolo della scheda e le sue (sottosotto)sezioni
risultassero nell'indice.
E che i titoli relativi alle schede riportati nell'indice
fossero peraltro in sanserif, a differenza del titolo "normali".
Mille grazie
M.

 fossero peraltro in sanserif, a differenza del titolo "normali".
\newcommand{\changesections}{%
  \titleformat{\subsection}
    {\relax}
    {\MakeTextLowercase{\thesubsection}}
    {1em}
    {\large\sffamily}%
  \titleformat{\subsubsection}
    {\relax}
    {\MakeTextLowercase{\thesubsubsection}}
    {1em}
    {\normalsize\sffamily}%
}
\newcommand{\cardsection}[1]{%
  \phantomsection
  \addcontentsline{toc}{subsubsection}{#1}%
  \subsubsection*{#1}}
\newcounter{card}
\newenvironment{card}[1]
  {\changesections\begin{shaded}\stepcounter{card}%
   \phantomsection
   \addcontentsline{toc}{subsection}
     {Scheda n.\texorpdfstring{\ }{ }%
      \arabic{card}\texorpdfstring{\protect\\}{ }#1}
   \subsection*{Scheda n.~\arabic{card}\\#1}}
  {\end{shaded}}
...
\begin{card}{Condivisioni con BitTorrent}
Fino a qualche anno fa, in Internet dominava una netta distinzione
fra i server e i client. I server fornivano contenuti che potevano
essere scaricati dai client. Ci� era dovuto anche ai limiti oggettivi
della banda: .......
\cardsection{La �filosofia� di BitTorrent}
La �filosofia� del p2p risiede nel fatto che chi � connesso per 
scaricare qualcosa pu� rendere disponibile quello che ha gi�
scaricato, o altro materiale che risiede nel suo computer:
...
\end{card}
Ciao
Enrico


Caspita, che dispendio di codice!
Dopo me lo studio un po'
Troppa grazia!!
Grazie
M.

 Troppa grazia!!
Ho modificato così per avere il font tt nei titoli
e il titolo della scheda in grassetto:
====================================================
\newcommand{\changesections}{%
\titleformat{\subsection}
{\relax}
{\MakeTextLowercase{\thesubsection}}
{1em}
{\large\ttfamily\textbf}%
\titleformat{\subsubsection}
{\relax}
{\MakeTextLowercase{\thesubsubsection}}
{1em}
{\normalsize\ttfamily}%
}
\newcommand{\cardsection}[1]{%
\phantomsection
\addcontentsline{toc}{subsubsection}{#1}%
\subsubsection*{#1}}
\newcounter{card}
\newenvironment{card}[1]
{\changesections\begin{shaded}\stepcounter{card}%
\phantomsection
\addcontentsline{toc}{subsection}
{Scheda n.\texorpdfstring{\ }{ }%
\arabic{card}\texorpdfstring{\protect\\}{ }#1}
\subsection*{\texttt Scheda n.~\arabic{card}\\#1}}
{\end{shaded}}
====================================================
Un'ultima cosa: per avere il font tt invece del rm
anche nell'indice?
Grazie!
M.

 Ho modificato cos� per avere il font tt nei titoli

Aggiungi \ttfamily nel terzo argomento di \addcontentsline
Ciao
Enrico

 Aggiungi \ttfamily nel terzo argomento di \addcontentsline
Perfetto. Ho apportato un altro paio di piccole variazioni:
\newcommand{\cardsection}[1]{%
\phantomsection
\addcontentsline{toc}{subsubsection}{\ttfamily\small #1} %
\subsubsection*{#1}}
\newcounter{card}
\newenvironment{card}[1]
{\changesections\begin{shaded}\stepcounter{card}%
\phantomsection
\addcontentsline{toc}{subsection}
{\ttfamily\small Scheda n.\texorpdfstring{\ }{ }%
\arabic{card}\texorpdfstring{ }#1}
\subsection*{\texttt Scheda n.~\arabic{card}\\#1}}
{\end{shaded}}
Grazie mille
M.

 Perfetto. Ho apportato un altro paio di piccole variazioni:
Mannaggia copia-incolla...
Ora ha la forma delle schede originarie
\newcommand{\cardsection}[1]{%
\phantomsection
\addcontentsline{toc}{subsubsection}{\ttfamily\small #1} %
\subsubsection*{#1}}
\newcounter{card}
\newenvironment{card}[1]
{\changesections\begin{shaded}\stepcounter{card}%
\phantomsection
\addcontentsline{toc}{subsection}
{\ttfamily\small Scheda n.\texorpdfstring{\ }{ }%
\arabic{card}\texorpdfstring{ \protect - }{ }#1}


 scrive:

Ero convinto che volessi "sans serif" e non dattilografico. Inoltre
\texorpdfstring{ \protect - }{ }
� una sciocchezza. Mettevo \protect\\ per evitare espansioni di \\,
se vuoi un trattino � sufficiente
\addcontentsline{toc}{subsection}
  {\ttfamily\small Scheda n.\texorpdfstring{\ }{ }%
   \arabic{card} - #1}
C'� anche un grave errore nella riga successiva: \texttt � un
comando con argomento e, come scrivi, solo la S andrebbe in
carattere dattilografico.
\subsection*{\ttfamily Scheda n.~\arabic{card}\\#1}}
Ti assicuro per� che il dattilografico usato per testo da leggere �
del tutto inadatto. Pu� andare per trascrivere codice, non per altri 
usi, se non vuoi costringere il tuo lettore a tornare ai tempi delle 
pi� antiquate macchine per scrivere.
Usarlo per i titoli e non per il corpo delle schede � un abominio. :)
Ciao
Enrico

 Usarlo per i titoli e non per il corpo delle schede è un abominio. :)
In generale è vero, soprattutto se pensiamo al Courier.
Ma il dattilografico di ClassicThesis trovo sia carino.
Cmq sto sistemando il "look" della guida, ma mi mancano
ancora parecchie cose da scrivere. C'è tempo per riflettere.
E per domandare... A proposito: posso offrire da veneziano
quanto meno una fornitura a vita di "Baicoli" al prof. Gregorio?
Grazie
M.

 quanto meno una fornitura a vita di "Baicoli" al prof. Gregorio?
Ah! Avessi saputo che sei veneziano non ti avrei mai detto niente! :)
Ciao
Enrico

 Ah! Avessi saputo che sei veneziano non ti avrei mai detto niente! :)
Nessuno è perfetto... :-)
M.