diff --git a/README.asciidoc b/README.asciidoc
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -143,6 +143,8 @@
 
 CHANGES
 -------
+1.3.1::
+  * Added the file Language.Markup
 1.3.0::
   * Added automatic rewrite rules, see section `Automatic markup'.
 1.2.2::
diff --git a/lhs2TeX-hl.cabal b/lhs2TeX-hl.cabal
--- a/lhs2TeX-hl.cabal
+++ b/lhs2TeX-hl.cabal
@@ -1,5 +1,5 @@
 Name:               lhs2TeX-hl
-Version:            0.1.3
+Version:            0.1.3.1
 Cabal-Version:      >= 1.6
 License:            MIT
 Author:             Alessandro Vermeulen <me@alessandrovermeulen.me>
@@ -29,5 +29,5 @@
                   , cmdargs >= 0.1
                   , MissingH
   hs-source-dirs:   src
-  Other-Modules:    Language.LaTeX, Literate.Agda, Literate.Haskell,
+  Other-Modules:    Language.LaTeX, Language.Markup, Literate.Agda, Literate.Haskell,
                     Literate.SimpleInfo, Base.CLI, Base.Common
diff --git a/src/Base/Common.hs b/src/Base/Common.hs
--- a/src/Base/Common.hs
+++ b/src/Base/Common.hs
@@ -1,4 +1,4 @@
 module Base.Common where
   
-programVersion = "0.1.3"
+programVersion = "0.1.3.1"
 programName    = "lhs2TeX-hl"
diff --git a/src/Language/Markup.hs b/src/Language/Markup.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Markup.hs
@@ -0,0 +1,34 @@
+module Language.Markup (markup) where
+
+import Data.Char (isDigit)
+
+markup :: String -> String
+markup = m' . b . break (\ a -> a == '_' || isDigit a) . rtrim "_"
+  where m' (str, [])   = str
+        m' (str, sub)  = str ++ "_{" ++ sub ++ "}"
+        b (a , b) = (a , ltrim "_" b)
+               
+
+
+rtrim :: String -> String -> String
+rtrim chars inp = rtrim' inp
+  where
+    rtrim' ""  = []
+    rtrim' [x] = case elem x chars of
+                   True  -> []
+                   False -> [x]
+    rtrim' (x:xs) = let tail = rtrim' xs
+                    in
+                      case tail of
+                        []   -> case elem x chars of
+                                  True  -> []
+                                  False -> [x]
+                        xs   -> x :  tail
+                        
+ltrim :: String -> String -> String
+ltrim chars = ltrim'
+  where ltrim' s = case s of
+                     [] -> []
+                     (x:xs) -> if elem x chars
+                               then ltrim' xs
+                               else s
