조판 소스 코드(Funnelweb)

조판 소스 코드(Funnelweb)

저는 Funnelweb에 능숙한 프로그래밍 도구를 사용하여 Tex 출력을 생성하고 있습니다.

내가 가지고 있는 일부 코드에서는 C 소스 코드에 ASCII 코드 25를 삽입해야 합니다.

이것은 C 코드를 생성하는 한 잘 작동하지만 .tex 파일에서 Latex를 실행하면 다음과 같은 결과가 나타납니다.

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

.tex 파일의 관련 부분은 다음과 같습니다.

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

(Emacs에서 ^Y는 2개가 아닌 1개의 문자입니다.)

"fwbtx" 매크로는 다음과 같이 정의됩니다.

\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}

나는 이것이 ASCII가 아닌 모든 문자를 이스케이프 처리해야 Tex가 불평하지 않는다고 믿습니다.

아무도 무엇이 잘못되었는지 설명할 수 있나요?

간단한 해결 방법이 있나요? "fwbtx" 매크로를 다른 것으로 바꾸시겠습니까?

도움을 주시면 감사하겠습니다.

답변1

간단히 정의를 변경하여 \fwbeginmacro무시 된 문자를 \fwendmacro만들 수 있습니다.^^Y

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

새로운 명령을 추가할 수도 있습니다

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

바로 다음 코드 시작 부분에 이 매크로를 사용하세요 \fwbeginmacro.

무시하지 않고 표시해야 하는 경우 다음과 같이 사용할 수 있습니다.

\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}

^Y 표시

하지만 참고하세요: 이것은 plainTeX와 LaTeX 코드의 매우 보기 흉한 혼합입니다!

관련 정보