{-# LANGUAGE OverloadedStrings #-}
module Text.LaTeX.Packages.Babel (
babel
, Language (..)
, uselanguage
, LangConf (..)
, uselanguageconf
, selectlanguage
, otherlanguage
, foreignlanguage
) where
import Text.LaTeX.Base
import Text.LaTeX.Base.Syntax
import Text.LaTeX.Base.Class
import Data.Text (toLower)
babel :: PackageName
babel :: PackageName
babel = PackageName
"babel"
data Language =
Bulgarian
| Brazilian
| Canadien
| Czech
| Dutch
| English
| Finnish
| Francais
| French
| FrenchB
| German
| NGerman
| Icelandic
| Italian
| Magyar
| Portuguese
| Russian
| Spanish
| Ukranian
deriving Int -> Language -> ShowS
[Language] -> ShowS
Language -> PackageName
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
showList :: [Language] -> ShowS
$cshowList :: [Language] -> ShowS
show :: Language -> PackageName
$cshow :: Language -> PackageName
showsPrec :: Int -> Language -> ShowS
$cshowsPrec :: Int -> Language -> ShowS
Show
instance Render Language where
render :: Language -> Text
render = Text -> Text
toLower forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. IsString a => PackageName -> a
fromString forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> PackageName
show
instance Texy Language where
texy :: forall l. LaTeXC l => Language -> l
texy = forall t l. (Texy t, LaTeXC l) => t -> l
texy forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Render a => a -> Text
render
uselanguage :: LaTeXC l => Language -> l
uselanguage :: forall l. LaTeXC l => Language -> l
uselanguage Language
lang = forall l. LaTeXC l => [l] -> PackageName -> l
usepackage [forall t l. (Texy t, LaTeXC l) => t -> l
texy Language
lang] PackageName
babel
data LangConf = LangConf { LangConf -> Language
mainLang :: Language , LangConf -> [Language]
otherLangs :: [Language] }
deriving Int -> LangConf -> ShowS
[LangConf] -> ShowS
LangConf -> PackageName
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
showList :: [LangConf] -> ShowS
$cshowList :: [LangConf] -> ShowS
show :: LangConf -> PackageName
$cshow :: LangConf -> PackageName
showsPrec :: Int -> LangConf -> ShowS
$cshowsPrec :: Int -> LangConf -> ShowS
Show
uselanguageconf :: LaTeXC l => LangConf -> l
uselanguageconf :: forall l. LaTeXC l => LangConf -> l
uselanguageconf LangConf
lc = forall l. LaTeXC l => [l] -> PackageName -> l
usepackage [l]
xs PackageName
babel
where
x :: l
x = l
"main=" forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy (LangConf -> Language
mainLang LangConf
lc)
xs :: [l]
xs = l
x forall a. a -> [a] -> [a]
: forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall t l. (Texy t, LaTeXC l) => t -> l
texy (LangConf -> [Language]
otherLangs LangConf
lc)
selectlanguage :: LaTeXC l => Language -> l
selectlanguage :: forall l. LaTeXC l => Language -> l
selectlanguage Language
lang = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"selectlanguage" [LaTeX -> TeXArg
FixArg forall a b. (a -> b) -> a -> b
$ forall t l. (Texy t, LaTeXC l) => t -> l
texy Language
lang]
otherlanguage :: LaTeXC l => Language -> l -> l
otherlanguage :: forall l. LaTeXC l => Language -> l -> l
otherlanguage Language
lang = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
"otherlanguage" [LaTeX -> TeXArg
FixArg forall a b. (a -> b) -> a -> b
$ forall t l. (Texy t, LaTeXC l) => t -> l
texy Language
lang]
foreignlanguage :: LaTeXC l => Language -> l -> l
foreignlanguage :: forall l. LaTeXC l => Language -> l -> l
foreignlanguage Language
lang = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL
forall a b. (a -> b) -> a -> b
$ \LaTeX
l -> PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"foreignlanguage" [LaTeX -> TeXArg
OptArg forall a b. (a -> b) -> a -> b
$ forall t l. (Texy t, LaTeXC l) => t -> l
texy Language
lang, LaTeX -> TeXArg
FixArg LaTeX
l]