smallcaps

Flatten camel case text in LaTeX files

Version on this page:0.6.0.2
LTS Haskell 9.21:0.6.0.4
Stackage Nightly 2017-07-25:0.6.0.4
Latest on Hackage:0.6.0.6

See all snapshots smallcaps appears in

BSD-3-Clause licensed by Stefan Berthold
Maintained by [email protected]
This version can be pinned in stack with:smallcaps-0.6.0.2@sha256:66b54076b12c0facc4fbe90cc4607a5447fc1351e3e5aeb4a896e37d20383927,8095

smallcaps is a pre-processor library for LaTeX files. The library comes with an executable that makes most functionality accessible through a command line interface. The pre-processor formats sequences of uppercase letters with TeX's \small macro or whatever you configure. Uppercase letters at the beginning of sentences are not formatted. Other formatting conditions can be configured by the user.

The executable can be configured through its command line arguments as well as through TeX comments. In the default configuration, lesscase does not change the content of any macro argument or environment (different from document). More and less restrictive configuration profiles can be activated and adapted. Configurations can be stored and restored at any time, even while processing the input file.

Text.SmallCaps
exports the main program as library.
Text.SmallCaps.Config
specifies the default configuration values for Text.SmallCaps.
Text.SmallCaps.TeXParser
parses Text to a TeXElement token stream.
Text.SmallCaps.TeXLaTeXParser
parses a TeXElement token stream and produces a LaTeXElement token stream.
Text.SmallCaps.DocumentParser
replaces uppercase letters in LaTeXElement token streams.

A simple program can be defined as

import Data.Default           ( def )
import Text.SmallCaps         ( smallcaps )
import Text.SmallCaps.Config  ( defaultProfile )
main = smallcaps def defaultProfile

This is virtually all the code that is necessary to implement the executable lesscase. Have a look in the source of the executable twocase which only formats sequences of two or more uppercase letters. It is a good reference for understanding the API changes that took place between the revisions 0.5 and 0.6.