ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Holger Peters <mailanholgerpeters@web.de>
Subject: Re: Using LateX packages
Date: Wed, 26 Jan 2005 14:27:31 +0100	[thread overview]
Message-ID: <41F79AC3.7060102@web.de> (raw)
In-Reply-To: <41F6785D.4020008@wxs.nl>

Hi,

thanks, that's a good start for me.

-- Holger

h h extern wrote:

> 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
> -----------------------------------------------------------------
>
> _______________________________________________
> ntg-context mailing list
> ntg-context@ntg.nl
> http://www.ntg.nl/mailman/listinfo/ntg-context
>

  reply	other threads:[~2005-01-26 13:27 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
2005-01-26 13:27   ` Holger Peters [this message]
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=41F79AC3.7060102@web.de \
    --to=mailanholgerpeters@web.de \
    --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).