On Wed, 06 Jun 2007 19:42:26 -0400 Aditya Mahajan <[EMAIL PROTECTED]> wrote:
> Hi, > > How can I make \framed ignore the width of the rule? I am trying to > typeset internet protocol headers, but I cannot fully get what I want. > Here is my attempt: > > \unprotect > > \makecounter{v!protocolheaderlength} > > \defineframed[protocolfieldheader] > [location=lohi,height=3\lineheight,offset=none,strut=yes] > > > \def\startprotocolheader > {\dodoubleempty\dostartprotocolheader} > > \def\dostartprotocolheader[#1][#2]% > {\getparameters[c!protocol][#1]% > \let\field\protocolheaderfield > \resetcounter{v!protocolheaderlength}% > \vbox\bgroup > % \ruledvbox\bgroup > \removeunwantedspaces > \dontleavehmode > \protocolfieldheader[frame=on,width=\c!protocolbits\c!protocolunitsize]% \protocolfieldheader[frame=on,width=\dimexpr\c!protocolunitsize*\c!protocolbits\relax]% > {\let\\\crlf\bold #2}\crlf} > > \def\stopprotocoloheader > {\egroup} > > \def\protocolheaderfield#1#2% > {\doif{\countervalue{v!protocolheaderlength}}{\c!protocolbits} > {\resetcounter{v!protocolheaderlength}\crlf}% > \removeunwantedspaces > \dontleavehmode > \protocolfieldheader[width=#1\c!protocolunitsize]{\let\\\crlf #2\\(#1)}% \protocolfieldheader[width=\dimexpr\c!protocolunitsize*#1\relax]{\let\\\crlf #2\\(#1)}% > \incrementcounter{v!protocolheaderlength}{#1}} > > > \protect > > % \showstruts > % \showboxes > > \starttext > > > % Why should unitsize=1mm. Are things being scaled by another factor? > \startprotocolheader[bits=16,unitsize=1mm][General MAC Headers] \startprotocolheader[bits=16,unitsize=1cm][General MAC Headers] > \field {1} {HT} > \field {1} {EC} > \field {6} {Type} > \field {1} {ESF} > \field {1} {CI} > \field {2} {EKS} > \field {1} {Rsv} > \field {3} {LEN MSB} > \field {8} {LEN LSB} > \field {8} {CID MSB} > \field {8} {CID LSB} > \field {8} {HCS} > \stopprotocoloheader > > > \stoptext > > > Notice that all the lines are not of the same size. It seems that the > rules of framed are causing the frame to be of a larger width. > > Also am I missing a scaling factor in width= expressions above. > Everything looks fine with unitsize=1mm, but the final figure is > clearly larger than 16mm. I am confused as to what is happening. > > Is there any better way to do this? > > Thanks, > Aditya Hi Aditya, you wanted something like this \newdimen\scale \scale\1mm \def\rule#1{\hrule width #1\scale} \rule{10} but you made this \def\scale{1mm} \def\rule#1{\hrule width #1\scale} \rule{10} The length of the \hrule in the first example is 10pt (10 \times 1pt = 10pt), while in the second example it is 101pt width (10 & 1pt = 101pt). Wolfgang ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________