Left frame on a block of text
Hi, I'm trying to create a style with a left border in the margin. I want the border to start and stop with the text. For the bottom I used framedepth but the bar still goes too far on the top? \showframe \showboxes \defineframedtext[leftbartext][ width=broad, frame=off, leftframe=on, rulethickness=.5ex, offset=-\framedparameter{rulethickness}, frameoffset=\dimexpr\leftmargindistance + \framedparameter{rulethickness}\relax, framedepth=-\framedparameter{frameoffset}, ] \starttext \startleftbartext \input knuth \stopleftbartext \stoptext Regards, Gilles
On Sat, 20 Apr 2019, Gilles Waeber wrote:
Hi, I'm trying to create a style with a left border in the margin.
I want the border to start and stop with the text. For the bottom I used framedepth but the bar still goes too far on the top?
\showframe \showboxes \defineframedtext[leftbartext][ width=broad, frame=off, leftframe=on, rulethickness=.5ex, offset=-\framedparameter{rulethickness}, frameoffset=\dimexpr\leftmargindistance + \framedparameter{rulethickness}\relax, framedepth=-\framedparameter{frameoffset}, ] \starttext \startleftbartext \input knuth \stopleftbartext \stoptext
Framed does not provide enough hooks to control the spaces. For something like this, you can also use metapost to draw the background: \showframe \showboxes \defineframedtext[leftbartext][ width=broad, frame=off, rulethickness=.5ex, background=mp:offsetframe, offset=overlay, ] \defineoverlay[mp:offsetframe][\useMPgraphic{mp:offsetframe}] \startuseMPgraphic{mp:offsetframe} draw leftboundary OverlayBox xshifted -(LeftMarginDistance + 0.5OverlayLineWidth) withpen pencircle scaled OverlayLineWidth; setbounds currentpicture to OverlayBox; \stopuseMPgraphic \starttext \startleftbartext \input knuth \stopleftbartext \stoptext Aditya
Thanks, that's exactly what I needed. I got inspired by your post at https://adityam.github.io/context-blog/post/frame-with-solid-left-line/ for my original code. I just added linecap:=butt; at the beginning of the metapost code to get squared ends. Gilles
Framed does not provide enough hooks to control the spaces. For something like this, you can also use metapost to draw the background:
\showframe \showboxes \defineframedtext[leftbartext][ width=broad, frame=off, rulethickness=.5ex, background=mp:offsetframe, offset=overlay, ]
\defineoverlay[mp:offsetframe][\useMPgraphic{mp:offsetframe}]
\startuseMPgraphic{mp:offsetframe} linecap:=butt; draw leftboundary OverlayBox xshifted -(LeftMarginDistance + 0.5OverlayLineWidth) withpen pencircle scaled OverlayLineWidth; setbounds currentpicture to OverlayBox; \stopuseMPgraphic
\starttext \startleftbartext \input knuth \stopleftbartext \stoptext
Aditya
Hi Aditya and Gilles, It seems to me that adding a bar in the margin either with framedtext or with MetaPost, lacks the ability to continue through a page break. Using the ConTeXt built-in sidebar mechanism has the advantage of continuing through a page break, but it is still not perfetct because in some occasions (but not always…) the sidebar plunges into the footnote area. I don't know if the issue can be solved (adding negative bottomoffset solves partly the problem but when there is no footnote then the sidebar appears to be too short…). Here is an example of how I use the sidebar to enhance \proclaim like texts. Best regards: OK %%%% begin test-sidebar-proclaim.tex %%%%%%% \definesidebar[ProclaimSidebar] \setupsidebar[ProclaimSidebar] [rulecolor=darkred, rulethickness=1pt, alternative=2, distance=5mm, % bottomoffset=-7mm, % topoffset=-2mm ] \defineenumeration[proclaim] [text=, before={\startsidebar[ProclaimSidebar]}, after={\stopsidebar}, style=slanted, title=yes, titleleft=, titleright={.}, % alternative=serried, alternative=hanging, % hang=2, width=fit, right={~}, way=bysection, prefix=yes, prefixsegments={chapter:section}] %%%%%%% \starttext \dorecurse{2}{\input knuth.tex\par} \input tufte.tex \footnote{The sidebar gets into the footnote\dots} \startproclaim{Lemma} \dorecurse{4}{\input ward.tex \par} \stopproclaim \stoptext %%%%%% end test-sidebar-proclaim.tex
On 20 Apr 2019, at 15:46, Aditya Mahajan
wrote: On Sat, 20 Apr 2019, Gilles Waeber wrote:
Hi, I'm trying to create a style with a left border in the margin.
I want the border to start and stop with the text. For the bottom I used framedepth but the bar still goes too far on the top?
\showframe \showboxes \defineframedtext[leftbartext][ width=broad, frame=off, leftframe=on, rulethickness=.5ex, offset=-\framedparameter{rulethickness}, frameoffset=\dimexpr\leftmargindistance + \framedparameter{rulethickness}\relax, framedepth=-\framedparameter{frameoffset}, ] \starttext \startleftbartext \input knuth \stopleftbartext \stoptext
Framed does not provide enough hooks to control the spaces. For something like this, you can also use metapost to draw the background:
\showframe \showboxes \defineframedtext[leftbartext][ width=broad, frame=off, rulethickness=.5ex, background=mp:offsetframe, offset=overlay, ]
\defineoverlay[mp:offsetframe][\useMPgraphic{mp:offsetframe}]
\startuseMPgraphic{mp:offsetframe} draw leftboundary OverlayBox xshifted -(LeftMarginDistance + 0.5OverlayLineWidth) withpen pencircle scaled OverlayLineWidth; setbounds currentpicture to OverlayBox; \stopuseMPgraphic
\starttext \startleftbartext \input knuth \stopleftbartext \stoptext
Aditya ___________________________________________________________________________________ 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://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
participants (3)
-
Aditya Mahajan
-
Gilles Waeber
-
Otared Kavian