Could one introduce an environment to customize the whole mass of the code snippets in a document?
kindaro opened this issue · 5 comments
I'm not a big deal of a LaTeX hacker, but I set out today to modify the font size of the code snippets to small
and this happens to not be doable due to the lack of an environment that I could have tweaked using one of the several tricks one finds on the Internet. Particularly, the nice \begin{code} ... \end{code}
environment would be lost in translation before any macros could be expanded in its place, and no other environment is consistently introduced that one could target with a macro.
Could it be made so that the code blocks are each automagically enclosed within some environment that does nothing, just for the sake of it being redefined by the typesetter according to their special needs? Or is there another, recommended route to achieving the same effect? So far, I would be happy consistently changing as little as font size and margins of the code snippets.
Code blocks are by default translated into the hscode
environment, and there are several ways to affect their styling.
This should work:
\documentclass{article}
%include polycode.fmt
\let\hscodestyle\small
\begin{document}
This is text:
> x = 2 -- this is code
\end{document}
In general, about everything in the output is configurable. You can completely change the way code is formatted by redefining the %subst code
directive.
I must be confused about something.
-
I thought I should include
lhs2TeX.fmt
, notpolycode.fmt
. This is what I see in the guide to be found in this repo and this is what the error message said to me when I first tried to runlhs2TeX
on a Literate Haskell file. Withlhs2TeX.fmt
, nohscode
environment is present, no matter what style. -
Even if I include
polycode.fmt
, the code will be wrapped inhscode
environment only for thepoly
style, not formath
ortt
. Consequently, for these styles there is no smallness to be observed.
So, the feature only works in 1 of 6 combinations of style and fmt
file. This is what I meant when I wrote "no other environment is consistently introduced" in the opening post.
The correct documentation is https://github.com/kosmikus/lhs2tex/blob/master/doc/Guide2.lhs
It recommends polycode.fmt
(which in turn uses lhs2TeX.fmt
and lhs2TeX.sty
).
You are right that for math
or tt
, the hscode
environment is not used. Personally, I consider all but poly
and newcode
modes to be deprecated. Everything you can do in these modes, you can do better usign poly
mode, so I don't think it's a huge limitation that these are different.
You can still redefine %subst code
for these modes if you need to use them, but I'd be interested to know what your use case is for these modes.
I just checked out various styles and settled on math
because it spaces out top-level definitions while poly
produces a solid wall of code.
Should I submit a pull request that corrects the error message observed when one forgets to include lhs2TeX.fmt
or polycode.fmt
and removes deprecated modes from the output of lhs2TeX --help
so that the next person discovering lhs2TeX
doesn't get confused the way I was?
Personally, I never liked about math
style that it introduces "arbitrary" spacing. If this is something you like, then in principle, you can simulate it in poly
style as well.
I'm happy to accept a PR that
- changes the error message to
perhaps you forgot to include "polycode.fmt" (or "lhs2TeX.fmt")?
- adds
(deprecated)
after the descriptions of-tt
,--math
,--code
and--verb
, but still lists them.
I'm planning to actually remove these modes at some point soon. Then they'll also disappear from the documentation and help messages completely.