These both work great, but do that for the whole document? Is there a way to restrict it to only apply the lines to some parts of the file, not every single paragraph? Thanks! --Joel On Monday, October 10, 2022 at 04:57:07 PM MDT, Max Chernoff wrote: Hi Joel, On Mon, 2022-10-10 at 12:46 +0000, Joel wrote: >  Hello Max, > It is preferred if the solution is just three lines per paragraph, > rather than some content parallel to the text A Lua callback solution:   \startluacode       -- Constants       RULE_OFFSET    = tex.sp "1em"       RULE_THICKNESS = tex.sp "0.4pt"       RULE_LENGTH    = tex.sp "3cm"         -- Callback       function userdata.lines(head)           if status.output_active or               tex.nest.ptr > 1           then               return head           end             local i = 0           for n in node.traverseid(node.id "hlist", head) do               i = i + 1               if i > 3 then                   break               end                 local offset = node.new "glue"               offset.width = RULE_OFFSET               node.slide(n.list).next = offset                 local rule = node.new "rule"               rule.width = RULE_LENGTH               rule.height = RULE_THICKNESS               rule.depth = 0               offset.next = rule           end             return head       end         nodes.tasks.appendaction(           "finalizers",           "after",           "userdata.lines"       )   \stopluacode     \parskip=\baselineskip     \starttext       One line paragraph         Two line paragraph \\       Two line paragraph         Three line paragraph \\       Three line paragraph \\       Three line paragraph         Four line paragraph \\       Four line paragraph \\       Four line paragraph \\       Four line paragraph         \samplefile{bryson}         \samplefile{knuth}   \stoptext An \everypar solution:   \appendtoks%       \vbox to 0pt{%           \dorecurse{3}{%               \rlap{%                   \hskip\dimexpr\hsize+1em%                   \vrule height 0.4pt width 3cm%                   \relax%               }%           }%       }%   \to\everypar     \parskip=\baselineskip     \starttext       One line paragraph         Two line paragraph \\       Two line paragraph         Three line paragraph \\       Three line paragraph \\       Three line paragraph         Four line paragraph \\       Four line paragraph \\       Four line paragraph \\       Four line paragraph         \samplefile{bryson}         \samplefile{knuth}   \stoptext Neither of these solutions are great though. Both of these solutions are pretty low-level, so there's presumably a more ConTeXt-y way of doing this. Thanks, -- Max