Re: [Risolto] Gestire spazio dopo ambiente personalizzato

#58718
Up
0
Down
::

Buonasera forum.

Premetto che, oltre al quesito dell’oggetto, voglio chiedervi lumi anche su altre cose.
Vediamo subito il seguente
`\documentclass[a4paper]{article}

\usepackage{lipsum}

\makeatletter
\newcommand{\argomento}{\@ifstar{\@argomentos}{\@argomento}}
\newcommand{\@argomentos}[1]{\textit{#1}}
\newcommand{\@argomento}[1]{$\langle$\textit{#1}$\rangle$}

\newcommand{\meta}{\@ifstar{\@metas}{\@meta}}
\newcommand{\@metas}[1]{{\rmfamily\hspace*{\parindent}\argomento*{#1}}}
\newcommand{\@meta}[1]{{\rmfamily\argomento{#1}}}
\makeatother

% Ambiente per la sintassi
\newenvironment{sintassi}%
{\vspace{1ex}\begingroup\noindent\ttfamily}%
{\vspace{1ex}\endgroup\\}%

\begin{document}
\lipsum[1]
\begin{sintassi}%
For \meta{variabile} = \meta{valore iniziale} To \meta{valore finale}\\
\meta*{\ldots}\\
\meta*{istruzioni}\\
\meta*{\ldots}\\
Next
\end{sintassi}
%
\lipsum[2]
\end{document}
`
Il quesito principale è quello di voler aggiustare il comportamento alla fine dell’ambiente. Il comportamento che si ha quando si toglie il % (messo qui solo per esempio, ma il caso reale si presenta quando si vuole iniziare un nuovo capoverso) è abbastanza strano: come posso gestirlo?

Al quesito precedente sono sicuro che è legato il codice dell’ambiente sintassi; devo dire la verità, pur usando LaTeX da due anni, è la prima volta che definisco un mio ambiente personale. Suggerimenti sono ben accetti.

Sempre sull’ambiente sintassi, rimuovendo il % c’è un strano spazio prima di For (l’ho messo perché ricordavo una cosa simile in una discussione che non trovo, ma non capisco il perché).

Grazie
Orlando

Un ambiente che produca testo nella parte iniziale o che comunque cominci un capoverso (nel tuo caso con \noindent), deve avere un \ignorespaces. Analogamente nella parte finale occorrerebbe \ignorespacesafterend. Ma sbagli qualcosa nella definizione:
`\newenvironment{sintassi}
{\par\addvspace{1ex}\noindent\ttfamily\ignorespaces}
{\par\addvspace{1ex}}`
Non occorrono \begingroup e \endgroup, perché ogni ambiente li aggiunge automaticamente; meglio chiudere il capoverso per sicurezza e usare \addvspace perché non si metta troppo spazio se ce n’è già per altri motivi. Mai usare \\ se non quando è davvero necessario.

Ciao
Enrico

Go to top