ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: h h extern <pragma@wxs.nl>
Subject: Re: Using LateX packages
Date: Tue, 25 Jan 2005 17:48:29 +0100	[thread overview]
Message-ID: <41F6785D.4020008@wxs.nl> (raw)
In-Reply-To: <41F64F12.8060903@web.de>

Holger Peters wrote:
> Hi,
> 
> I want to use a LaTeX Package (clrscode), or at least I want to port it 
> to Context.
> 
> http://www.cs.dartmouth.edu/~thc/clrscode/

hm, not complex but mostly calls to latex font switches ans such

> Is there some way to use LaTex Packages (I guess not).

so you need to rewrite it

> Is there documentation about writing ConTeXt modules? (I didn't find any).

- try to use high level constructs (or ask me to provide them -)
- only use low level macroe documented in syst-*.tex and supp-*.tex (the ones 
mentioned in \macros, not the \dododo things)
- think fresh, forget about how other packages do it, think about what *you* 
want / need
- user modules are prefixed with t- (m- x- p- and s- are reserved for core 
modules and styles)

Now, about your code beautifier. Since you end up with additional markup anyway, 
why not go XML. You can then embed that in you tex document as usual (and have 
the full power of context available) but also use the code in webpages.

To give you an idea:

\starttext

\long\def\startcode#1\stopcode
  {\begingroup
   \startXMLmapping[code]%
   \enableXML\scantokens{#1}%
   \stopXMLmapping
   \endgroup}

\newcount\codedepth
\newdimen\codeindent \codeindent=1em

\def\incrementcodedepth
   {\advance\codedepth\plusone
    \ifnum\codedepth>\plusone \advance\leftskip\codeindent \fi
    \relax}

\def\decrementcodedepth
   {\ifnum\codedepth>\plusone \advance\leftskip-\codeindent \fi
    \advance\codedepth\minusone
    \relax}

\defineregister[function][functions]
\setupregister[function][expansion=yes]

\startXMLmapping[code]

   \defineXMLsingular [if]   {\endgraf{\bf if}\incrementcodedepth}
   \defineXMLsingular [then] {{\bf then}\endgraf\incrementcodedepth}
   \defineXMLsingular [else] {\endgraf\decrementcodedepth{\bf 
else}\endgraf\incrementcodedepth}
   \defineXMLsingular [end]  {\endgraf{\bf end}\decrementcodedepth\endgraf}

   \defineXMLsingular [int]  {{\bf int}\space\ignorespaces}
   \defineXMLsingular [bool] {{\bf bool}\space\ignorespaces}

   \defineXMLsingular [var]  [id='x'] {{\tf \XMLop{id}}}

   \defineXMLenvironment [function] [id=unknown]
     {\endgraf\function{\XMLop{id}}{\bf function}\space{\sl\XMLop{id}}\space}
     {\endgraf\incrementcodedepth}

   \defineXMLenvironment [return]
     {{\bf return}\space}
     {\endgraf}

   \defineXMLenvironment [c]
     {\bgroup\setups{code:comment}\type{//* }\ignorespaces}
     {\removeunwantedspaces\type{ *//}\egroup\endgraf}

\stopXMLmapping

\startsetups [code:comment]

   \defineXMLsingular [var]  [id='x'] {{\bs \XMLop{id}}}

\stopsetups

\startcode
<function id='ExampleFunction'>(<bool/> i; <int/> j)</function>
     <if/> (i&lt;10) <then/>
        <c>Let's add some comment here. Well, <var id='a'/> means nothing to me.</c>
        <var id='a'/> := 3
     <else/>
        <c>This is a funny language, a kind of mixture.</c>
        <var id='a'/> := 1
     <end/>
     <return>a</return>
<end/>
\stopcode

\blank[3*big]\placeregister[function][criterium=all]

\stoptext

If there is interest in such a module, i can write the auxiliary macros needed 
for it and others can define the languages.

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------

  parent reply	other threads:[~2005-01-25 16:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-25 13:52 Holger Peters
2005-01-25 13:00 ` luigi scarso
2005-01-25 16:48 ` h h extern [this message]
2005-01-26 13:27   ` Holger Peters
2005-01-25 21:16 ` Patrick Gundlach
2005-01-26  6:42   ` Re: Using LateX packages => for algorithms Maurice Diamantini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=41F6785D.4020008@wxs.nl \
    --to=pragma@wxs.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).