Codice e risultato

  • Creatore
    Topic
  • #46019
    samiel
    Partecipante
      Up
      0
      Down
      ::


      Mi attira l’idea di produrre codice e risultato in due riquadri a fronte.
      Come in “Arte LaTeX” di Pantieri. Ho preso spunto dal codice
      di “Una (non così breve) ecc”, che usa \verbatim e 2 minipage.
      Solo che l’impresa è nettamente superiore alle mie forze.
      Il codice scopiazzato è il seguente:
      `\documentclass[a4paper,10pt]{article}
      \usepackage[italian]{babel}
      \usepackage[utf8x]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage{verbatim}

      \newwrite\example@out
      \newcounter{exacnt}
      \setcounter{exacnt}{1}
      \newlength{\savefboxrule}
      \newlength{\savefboxsep}
      \newlength{\outdent}
      \setlength{\outdent}{1cm}
      \addtolength{\headwidth}{\outdent}
      \newenvironment{example}%
      {\begingroup%
      \@bsphack
      \immediate\openout \example@out \jobname.exa
      \let\do\@makeother\dospecials\catcode`\^^M\active
      \def\verbatim@processline{%
      \immediate\write\example@out{\the\verbatim@line}}%
      \verbatim@start}%
      {\immediate\closeout\example@out\@esphack\endgroup%
      \stepcounter{exacnt}%
      \setlength{\parindent}{0pt}%
      \par\addvspace{3.0ex plus 0.8ex minus 0.5ex}\vskip -\parskip
      \expandafter\ifx\csname r@exa\theexacnt\endcsname\relax\else
      \ifodd\HyPsd@pageref{exa\theexacnt}\hspace*{0pt}\else\hspace*{-\outdent}\fi%
      \fi
      \makebox[\linewidth][l]{%
      \begin{minipage}[c]{0.5\outdent+0.46\linewidth-3mm}%
      \small\verbatiminput{\jobname.exa}
      \end{minipage}%
      \hspace{5mm}%
      \setlength{\savefboxrule}{\fboxrule}%
      \setlength{\fboxrule}{0.1pt}%
      \setlength{\savefboxsep}{\fboxsep}%
      \setlength{\fboxsep}{3mm}%
      \fbox{%
      \begin{minipage}{0.5\outdent+0.54\linewidth-3.5mm-2\fboxrule-2\fboxsep}%
      \setlength{\fboxrule}{\savefboxrule}%
      \setlength{\fboxsep}{\savefboxsep}%
      \setlength{\fboxrule}{0.5pt}%
      \setlength{\parskip}{1ex plus 0.4ex minus 0.2ex}%
      \begin{trivlist}\item\small\input{\jobname.exa}
      \end{trivlist}
      \end{minipage}
      }%
      }\label{exa\theexacnt}%
      \par\addvspace{3ex plus 0.8ex minus 0.5ex}\vskip -\parskip
      }

      \begin{document}

      \begin{example}
      \Large This is Large
      \end{example}

      \end{document}`
      ma in sede di compilazione dà l’errore:
      `! LaTeX Error: Missing \begin{document}.

      See the LaTeX manual or LaTeX Companion for explanation.
      Type H for immediate help.

      l.7 \newwrite\example@
      out
      ? `
      e qui mi fermo…

      Grazie!
      M.

    Visualizzazione 7 filoni di risposte
    • Autore
      Risposte
      • #46020
        Up
        0
        Down
        ::

        Mi attira l’idea di produrre codice e risultato in due riquadri a fronte.
        Come in “Arte LaTeX” di Pantieri. Ho preso spunto dal codice
        di “Una (non così breve) ecc”, che usa \verbatim e 2 minipage.
        Solo che l’impresa è nettamente superiore alle mie forze.
        Il codice scopiazzato è il seguente:
        `\documentclass[a4paper,10pt]{article}
        \usepackage[italian]{babel}
        \usepackage[utf8x]{inputenc}
        \usepackage[T1]{fontenc}
        \usepackage{verbatim}

        \newwrite\example@out
        \newcounter{exacnt}
        \setcounter{exacnt}{1}
        \newlength{\savefboxrule}
        \newlength{\savefboxsep}
        \newlength{\outdent}
        \setlength{\outdent}{1cm}
        \addtolength{\headwidth}{\outdent}
        \newenvironment{example}%
        {\begingroup%
        \@bsphack
        \immediate\openout \example@out \jobname.exa
        \let\do\@makeother\dospecials\catcode`\^^M\active
        \def\verbatim@processline{%
        \immediate\write\example@out{\the\verbatim@line}}%
        \verbatim@start}%
        {\immediate\closeout\example@out\@esphack\endgroup%
        \stepcounter{exacnt}%
        \setlength{\parindent}{0pt}%
        \par\addvspace{3.0ex plus 0.8ex minus 0.5ex}\vskip -\parskip
        \expandafter\ifx\csname r@exa\theexacnt\endcsname\relax\else
        \ifodd\HyPsd@pageref{exa\theexacnt}\hspace*{0pt}\else\hspace*{-\outdent}\fi%
        \fi
        \makebox[\linewidth][l]{%
        \begin{minipage}[c]{0.5\outdent+0.46\linewidth-3mm}%
        \small\verbatiminput{\jobname.exa}
        \end{minipage}%
        \hspace{5mm}%
        \setlength{\savefboxrule}{\fboxrule}%
        \setlength{\fboxrule}{0.1pt}%
        \setlength{\savefboxsep}{\fboxsep}%
        \setlength{\fboxsep}{3mm}%
        \fbox{%
        \begin{minipage}{0.5\outdent+0.54\linewidth-3.5mm-2\fboxrule-2\fboxsep}%
        \setlength{\fboxrule}{\savefboxrule}%
        \setlength{\fboxsep}{\savefboxsep}%
        \setlength{\fboxrule}{0.5pt}%
        \setlength{\parskip}{1ex plus 0.4ex minus 0.2ex}%
        \begin{trivlist}\item\small\input{\jobname.exa}
        \end{trivlist}
        \end{minipage}
        }%
        }\label{exa\theexacnt}%
        \par\addvspace{3ex plus 0.8ex minus 0.5ex}\vskip -\parskip
        }

        \begin{document}

        \begin{example}
        \Large This is Large
        \end{example}

        \end{document}`
        ma in sede di compilazione dà l’errore:
        `! LaTeX Error: Missing \begin{document}.

        See the LaTeX manual or LaTeX Companion for explanation.
        Type H for immediate help.

        l.7 \newwrite\example@
        out
        ? `
        e qui mi fermo…

        Grazie!
        M.

        Qualsiasi codice misterioso con @ deve essere racchiuso tra le parole magiche \makeatletter e \makeatother, altrimenti non può funzionare. Tuttavia quel codice richiede hyperref. Suppongo che lo si possa correggere, ma non ci metterei le mani.

        Ciao
        Enrico

      • #46021
        samiel
        Partecipante
          Up
          0
          Down
          ::


          Adesso vedo di capirci qualcose in più.
          Dici tuttavia che si tratta di una complicazione inutile?
          Da qualche parte posso ricavare degli esempi di codice
          per realizzare una cosa simile? Purtroppo Pantieri,
          con motivazioni didattiche che mi ha spiegato,
          non diffonde il suo codice. Così mi è venuto per le mani
          il vecchio “A not so short”, di cui peraltro esiste una versione
          aggiornata al dicembre 2009…

          Grazie
          M.

        • #46022
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::

            Da qualche parte posso ricavare degli esempi di codice per realizzare una cosa simile?

            Hai provato il pacchetto examplep?

            http://www.ctan.org/tex-archive/macros/latex/contrib/examplep/

            Ciao,
            L.

          • #46023
            samiel
            Partecipante
              Up
              0
              Down
              ::


              No. anzi non l’avevo mai sentito nominare.
              Adesso scarico e vedo. Grazie della segnalazione

              M.

            • #46024
              ernded
              Partecipante
                Up
                0
                Down
                ::

                Purtroppo Pantieri,
                con motivazioni didattiche che mi ha spiegato,
                non diffonde il suo codice.
                M.

                Mi meraviglia molto che un utente esperto di LaTeX, quindi cultore del free- software (che, per definizione. è opensource), non diffonda i suoi codici!
                Non capisco le motivazioni didattiche: è didatticamente utile studiare un codice, non tenerlo segreto!
                Ernesto

              • #46025
                samiel
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Sto dando un’occhiata a examplep. I risultati sono esteticamente
                  molto meno belli di quelli del testo di Pantieri. Lì sono fortemente
                  personalizzati o non fanno proprio ricorso a quel pacchetto?
                  Poi non so se, al solito, sbaglio, ma ad es a p. 13 del manuale leggo:

                  vrule=rule By default, the Source and the Sample are separated with a ver-
                  tical rule of width \arrayrulewidth in the middle of a horizontal space
                  specified by source-sepwidth=. Use =skip to omit the rule but keep the
                  space. Use =none to have no separator at all.

                  Allore tento:
                  `\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{url}
                  \usepackage[vrule=skip]{examplep}
                  \usepackage{codep}

                  \begin{document}
                  \begin{code}
                  t \usepackage{url}
                  URL:
                  \\\url{http://foo.org/~user/}
                  \end{code}
                  \end{document}`
                  ma ottengo:
                  `! Package examplep Error: Unknown option: vrule (= skip).

                  See the examplep package documentation for explanation.
                  Type H for immediate help.

                  l.2413 …name opt@\@currname.\@currext\endcsname}
                  \fi
                  ?`
                  COsa c’è che non va?
                  Grazie
                  M.[/code]

                • #46026
                  lorenzo.pantieri
                  Partecipante
                    Up
                    0
                    Down
                    ::

                    Mi meraviglia molto che un utente esperto di LaTeX, quindi cultore del free- software (che, per definizione. è opensource), non diffonda i suoi codici!
                    Non capisco le motivazioni didattiche: è didatticamente utile studiare un codice, non tenerlo segreto!

                    Ciao, innanzitutto vi ringrazio per l’attenzione che riservate ai miei lavori. 😀

                    Le motivazioni che mi hanno spinto a non diffondere i sorgenti dell’Arte sono queste.

                    1. Il codice che sta dietro l’Arte è pieno di porcate. 🙁 Queste a volte sono necessarie visto l’argomento (una guida a LaTeX non è un documento “normale”), altre le ho messe io (e non ho trovato ancora il tempo di correggerle). Non vorrei che un utente alle prime armi ripetesse quelle porcate perché “le ha viste scritte nei .tex dell’Arte”. Se mettessi on-line i sorgenti (almeno, così come sono ora), penso che finirei per fare un cattivo servizio alla comunità.

                    2. Se un lettore vuol fare una cosa (per esempio, scrivere esempi “fianco a fianco” come vuole fare Samiel), non è spulciando i .tex dell’Arte (che assomigliano ormai a un antico palinsesto…) che caverà fuori il ragno dal buco. Meglio partire da un documento minimale.

                    3. Esistono tanti tipi di licenze. I miei lavori sono liberamente scaricabili (e studiabili!), ma non modificabili: sono distribuiti con © Lorenzo Pantieri (e Tommaso Gordini, quando necessario). Diciamo che è una scelta di prudenza. Di sicuro, quando pubblicherò la nuova edizione dell’Arte discuterò di questo aspetto con Tommaso (capirai presto perché).

                    Quanto a examplep, gli esempi dell’Arte sono ottenuti con un ambiente confezionato a mano (in realtà gli ambienti sono tre, leggerissimamente diversi uno dall’altro: ecco un altro motivo per non fare come faccio io). Se avessi tempo, passerei a examplep: quando ho iniziato a scrivere l’Arte, non ne conoscevo l’esistenza… 😉

                    Ciao,
                    L.

                  • #46027
                    samiel
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Examplep è un pacchetto dall’uso mi sembra complesso,
                      anche un poco farraginoso. Certo, fa quello che serve.
                      Vorrei capire se si può personalizzare in linea con l’aspetto
                      globale del documento. Nel caso del codice minimale
                      che ho riportato sopra, vorrei in primo luogo eliminare
                      la munerazine delle righe del codice. Aumentare la distanza
                      fra codice ed esempio (cose che ho visto si possono fare).
                      E in primis togliere quella bruttissima riga sottile che separa
                      codice e risultato, sottile e alta cole il risultato, mentre il codice
                      è più lungo, il che mi appare decisamente brutto.
                      Mmi pareva possibile con `\usepackage[vrule=skip]{examplep} `
                      ma, come ho scritto nel post precedente, mi dà errore…

                      M.

                  Visualizzazione 7 filoni di risposte
                  • Devi essere connesso per rispondere a questo topic.

                  Go to top