def contextual(fn):
return Contextual(fn)<EOL>
Returns a Doc that is lazily evaluated when deciding the layout.

    ``fn`` must be a function that accepts four arguments:

    - ``indent`` (``int``): the current indentation level, 0 or more
    - ``column`` (``int``) the current output column in the output line
    - ``page_width`` (``int``) the requested page width (character count)
    - ``ribbon_width`` (``int``) the requested ribbon width (character count)