[Risolto] Gestire spazio dopo ambiente personalizzato

  • Creatore
    Topic
  • #58717
    admin
    Amministratore del forum
      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

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #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

      • #58719
        admin
        Amministratore del forum
          Up
          0
          Down
          ::


          Grazie mille, adesso funziona perfettamente.

          Grazie
          Orlando

      Visualizzazione 1 filone di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top