[latex] verbatim + code latex

verbatim + code latex [latex] - Logiciels - Linux et OS Alternatifs

Marsh Posté le 09-09-2003 à 23:29:49    

Vous avez sans auncun doute tous lu une courte introduction à LaTeX. Dedans, les auteurs mettent du code LaTeX en verbatim, et en parallèle ce que cela donne après compilation.
 
Il y a un environnement qui permet de faire cela (un package) ?
 
P.S. : il y a bien le code source d'une courte introduction de visible, mais personnellement je préfèrerai quelque chose de plus léger, et surtout compréhensible pour moi

Reply

Marsh Posté le 09-09-2003 à 23:29:49   

Reply

Marsh Posté le 10-09-2003 à 12:09:54    

\begin{verbatim}
mon code \Latex que je veux pas voir modifier
\end{verbatim}


ou (mais + fragile)
 

\verb+mon code \Latex que je ne veux pas voir modifier +


Message édité par Mjules le 10-09-2003 à 12:10:28

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 10-09-2003 à 12:42:02    

ben non cela ne vas pas : ce n'est pas ce que je veux.
Si tu préfères j'aimerais comme "deux colonnes" où dans celle de gauche il y a ce que fait le code et dans celle de droit le code (ou l'inverse).
 
Je sais qu'avec deux minipages, cela pourrait se faire (testé), mais le problème est qu'il m'est impossible d'écrire une commande ou environnement à partir de cela. Ce que j'avais fait :


\begin{minipage}[l]{.5\textwidth}
 Je mets ici mon texte \LaTeX.
 tjrù \dots \ldots
\end{minipage}\hfill
\begin{minipage}[r]{.5\textwidth}
\begin{boxedverbatim}
 Je mets ici mon texte \LaTeX.
 tjrù \dots \ldots
\end{boxedverbatim}
\end{minipage}


Mais le problème c'est que c'est un peu long à taper... Et si l'usage en est fréquent...

Reply

Marsh Posté le 10-09-2003 à 14:40:10    

bon je vais poser le problème autrement.
Lorsqu'on crée un nouvel environnement, on a la syntaxe suivante :

\newenvironment{exemple}
       {begdef}
       {end def}


Le texte s'insérera automatiquement entre {begdef} et {enddef}.
Par quel moyen peut-on récupérer ce texte ? (par exemple si on veut que dans l'environnement exemple, il soit écrit deux fois)

Reply

Marsh Posté le 11-09-2003 à 11:16:51    

Pas possible à ma connaissance. Si tu trouves, je suis très intéressé.
Workaround: tout mettre entre accolades

Code :
  1. \newcommand{\twiceText}[1] {#1 #1}
  2. \newenvironment{exemple}
  3.   {\twiceText}
  4.   {}
  5. ...
  6. \begin{exemple}{
  7.    un peu de texte
  8. }\end{exemple}


 
mais on y perd tout l'intérêt du "environment" ...

Reply

Marsh Posté le 12-09-2003 à 02:19:54    

bon, j'ai essayé de poursuivre dans la piste.
Le site (en espagnol :D ) qui est intéressant sur la chose :
http://ildp.pluto.linux.it/AppuntiLinux/a2305.html
 
J'en suis arrivé à écrire quelque chose comme :

Code :
  1. \newwrite\exemple
  2. \newenvironment{ex}
  3. {\immediate\openout\exemple\jobname.ex
  4.  \immediate\write\exemple}
  5. {\immediate\closeout\exemple
  6.  \begin{minipage}[l]{.5\textwidth}
  7.  \input{\jobname.ex}
  8.  \end{minipage}
  9.  \hfill\begin{minipage}[r]{.5\textwidth}
  10.  \verbatiminput{\jobname.ex}
  11.  \end{minipage}}


Le problème est que si j'insère dans le document cela :


\begin{ex}
tralala
\end{ex}


j'obtiens cette erreur :


! Missing { inserted.
<to be read again>
                   t
l.156 t
       ralala


Ce qui m'a ammené à utiliser l'environnement ainsi :


\begin{ex}
{tralala}
\end{ex}


et au miracle, ça fonctionne... Je ne comprends pas trop pourquoi. Rajouter des acolades comme cela me fait plus penser à une commande qu'à un environnement. Vous n'auriez pas une idée ?
Je pense que cela doit être lié à l'ouverture du fichier .ex. LaTeX doit avoir besoin d'un groupe pour savoir quoi écrire dedans.
 
P.S. : Je n'ai pas encore essayé via une commande, mais cela risque de me poser problème dans la mesure où il me faudrait du verbatim.


Message édité par tonton nestor le 12-09-2003 à 02:27:48
Reply

Marsh Posté le 12-09-2003 à 15:42:05    

Enfin compris :)
 
Donc voilà l'erreur :
j'avais mis :

\immediate\write\exemple


Or il faut quelque chose comme :

\immediate\write\exemple{le texte}


raison pour laquelle je devais mettre des {} lorsque j'utilisais l'environnement.
De plus, le problème était aussi que les macros tels que \dots étaient remplacées par leur code TeX.
 
Conséquence je suis retourné voir les sources d'une courte introduction. Et surtout est pris la doc du paquetage verbatim. Pag 5 et 6 de ce dernier, il y quelques explications pour pouvoir utiliser la commande write.
 
Finalement j'en suis arrivé au code suivant qui en comparaison à celui d'une courte introduction est quasi-identique :


\newwrite\exemple
\newenvironment{ex}
 {\@bsphack
  \immediate\openout\exemple\jobname.ex
  \let\do\@makeother\dospecials
  \catcode`\^^M\active
  \def\verbatim@processline{%
  \immediate\write\exemple{\the\verbatim@line}}%
  \verbatim@start}
 {\immediate\closeout\exemple
  \@esphack
  \begin{minipage}[l]{.5\textwidth}
  \input{\jobname.ex}
  \end{minipage}
  \begin{minipage}[r]{.5\textwidth}  
  \lstinputlisting{\jobname.ex}
  \end{minipage}}


Les histoires de minipage sont à modifié selon sont bon désir.
Chose importante : ne pas déclarer avec \jobname une extension déjà utilisée par LaTeX.
Deuxième point : cette environnement ne fonctionne pas s'il est mis directement dans le préambule du document. Il faut obligatoirement créé un .sty (ne pas oublier de mettre \RequirePackage{verbatim}) puis l'appeler dans le source avec \usepackage{exemple.sty}

Reply

Marsh Posté le 22-03-2009 à 10:36:47    

Bon le post n'est plus très frais, mais pour info, au lieu de se compliquer la vie, il existe des environnements tous faits pour faire ce genre de choses... Regardez le package 'fvrb-ex' à cette adresse : http://www.ctex.org/documents/pack [...] vrb-ex.pdf
 
L'environnement intéressant ici est le PSideBySideExample page 5 et jusqu'à la fin. Voilà, a plus!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed