composición tipográfica del código fuente (Funnelweb)

composición tipográfica del código fuente (Funnelweb)

Estoy utilizando la herramienta de programación alfabetizada Funnelweb, que produce resultados en Tex.

En algún código que tengo, necesito insertar el código ASCII 25 en el código fuente C.

Esto funciona bien en cuanto a producir el código C, pero cuando ejecuto Latex en el archivo .tex, obtengo:

! Text line contains an invalid character.
l.1573
...
^^Y

La parte relevante del archivo .tex es:

\fwbtx[
...
^Y
...
]

(en Emacs; ^Y es un carácter, no dos)

y la macro "fwbtx" se define como:

\def\fwbtx[{%
\begingroup%
\def\par{\leavevmode\endgraf}%
\catcode`\`=\active%
\obeylines%
\def\do##1{\catcode`##1=12 }\dospecials%
\obeyspaces
\parskip=0pt%
\tt%
\fwverbatimgobble}

\def\fwverbatimgobble#1]fwetx={#1\endgroup}

que, creo, se supone que debe escapar de todos los caracteres que no sean ASCII, para que Tex no se queje.

¿Alguien puede explicar qué sale mal?

¿Existe alguna solución sencilla? ¿Reemplazar la macro "fwbtx" con algo?

Cualquier ayuda se agradece.

Respuesta1

Simplemente puede cambiar la definición de \fwbeginmacroy \fwendmacrocrear ^^Yun carácter ignorado.

\def\fwbeginmacro{\begingroup\fwparskipoff\bigskip\catcode`\^^Y=9 }
\def\fwendmacro{\fwparskipon\par\endgroup}

También puedes agregar un nuevo comando.

\def\fwignorexxv{\catcode`\^^Y=9}

y use esta macro al comienzo del código justo después \fwbeginmacro.

Si no se debe ignorar sino mostrar, se puede utilizar algo como:

\tolerance=10000
\parindent=0pt
\def\fwparskipon{\parskip=\medskipamount}
\def\fwparskipoff{\parskip=0pt}
\fwparskipon
\raggedbottom
\font\fwfontnote=cmr7
\font\fwfontnorm=cmr10
\font\fwfontnorma=cmr10 scaled \magstep1
\font\fwfontnormb=cmr10 scaled \magstep2
\font\fwfontbold=cmbx10
\font\fwfontbolda=cmbx10 scaled \magstep1
\font\fwfontboldb=cmbx10 scaled \magstep2
\font\fwfontboldc=cmbx10 scaled \magstep3
\font\fwfontboldd=cmbx10 scaled \magstep4
\begingroup
  \catcode`\^^Y=\active
  \gdef\fwshowxxv{\catcode`\^^Y=\active\def^^Y{\textcolor{red}{\textasciicircum
      Y}}}
\endgroup
\def\fwbeginmacro{\begingroup\fwparskipoff\bigskip\fwshowxxv}
\def\fwendmacro{\fwparskipon\par\endgroup}
\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
\def\fwzero#1{{\bf Z}}
\def\fwmany#1{{\bf M}}
\def\fwlib#1{{\bf L}}
\def\fwequals{ $\equiv$}
\def\fwplusequals{ $+\equiv$}
\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
\def\fwoquote{`}
\def\fwcquote{'}
\def\fwoparen{$($}
\def\fwcomma{$,$}
\def\fwcparen{$)$}
\def\fwparam#1{$\diamond #1$}
\def\fwparams#1{$(\diamond #1)$}
\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
\def\fwnote#1{{\fwfontnote #1}\par}
\def\fwisafile#1{\fwnote{#1}}
\def\fwusedin#1{\fwnote{#1}}
\def\fwseealso#1{\fwnote{#1}}
\def\fwendmacronotes{\endgroup}
{\catcode`\`=\active \gdef`{\relax\lq}}
{\obeyspaces\global\let =\ }
\def\fwbtx[{%
\begingroup%
\def\par{\leavevmode\endgraf}%
\catcode`\`=\active%
\obeylines%
\def\do##1{\catcode`##1=12 }\dospecials%
\obeyspaces
\parskip=0pt%
\tt%
\fwverbatimgobble}
\def\fwverbatimgobble#1]fwetx={#1\endgroup}
\def\fwrule{\medskip\hrule\medskip}
\def\fwqh{\hskip1.5em\relax}
\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
\def\fwtocfinish#1{\fwrule}
\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
\def\fwlibd#1#2{\fwbeforesec{\bf          #1 #2}\penalty200}
\def\fwlibe#1#2{\fwbeforesec{\bf          #1 #2}}
\def\fwseca#1#2{\fwliba{#1}{#2}}
\def\fwsecb#1#2{\fwlibb{#1}{#2}}
\def\fwsecc#1#2{\fwlibc{#1}{#2}}
\def\fwsecd#1#2{\fwlibd{#1}{#2}}
\def\fwsece#1#2{\fwlibe{#1}{#2}}
\def\fwlit#1{{\tt #1}}
\def\fwemp#1{{\it #1}}
\def\fwnewpage{\vfill\eject}
\def\fwvskip#1{\null\vskip #1mm}
\def\fwfontnormal#1{{\fwfontnorm {#1}}}
\def\fwfonttitle#1{{\fwfontboldd {#1}}}
\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
\def\fwleftline#1{\leftline{#1}}
\def\fwcenterline#1{\centerline{#1}}
\def\fwrightline#1{\rightline{#1}}
\def\p#1{{\tt #1}}  % P for Program text.
\def\flagpage#1#2{
   \null
   \vfill
   \centerline{\fwfontboldd #1}
   \vskip 1cm
   \centerline{\fwfontboldd #2}
   \vfill
   \null
   \vfill
}
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\fwbeginmacro
\fwmacroname{Example}{1}\fwequals \fwodef \fwbtx[ABC]fwetx=%
\fwcdef 
\fwbeginmacronotes
\fwusedin{This macro is invoked in definition 2.}
\fwendmacronotes
\fwendmacro
\fwbeginmacro
\fwfilename{ex.txt}{2}\fwequals \fwodef \fwmacroname{Example}{1}\fwbtx[
]fwetx=%
\fwcdef 
\fwbeginmacronotes
\fwisafile{This macro is attached to an output file.}
\fwendmacronotes
\fwendmacro
\end{document}

mostrar el ^Y

Pero tenga en cuenta: ¡Esta es una mezcla muy fea de código PlainTeX y LaTeX!

información relacionada