{-# LANGUAGE OverloadedStrings #-}
module Text.LaTeX.Packages.Hyperref
(
hyperref
, HRefOption (..)
, URL
, createURL
, href
, url
, nolinkurl
, hyperbaseurl
, hyperimage
, autoref
, nameref
, pdftex
, pdftitle
, pdfauthor
, pdfsubject
, pdfcreator
, pdfproducer
, pdfkeywords
, pdftrapped
, pdfstartpage
, pdfpagelayout
, PdfPageLayout(..)
) where
import Text.LaTeX.Base.Syntax
import Text.LaTeX.Base.Class
import Text.LaTeX.Base.Render
import Text.LaTeX.Base.Types
import Data.Text (pack)
hyperref :: PackageName
hyperref :: PackageName
hyperref = PackageName
"hyperref"
data HRefOption =
PDFRemoteStartView
| PDFNewWindow
| HRefPage Int
deriving Int -> HRefOption -> ShowS
[HRefOption] -> ShowS
HRefOption -> PackageName
(Int -> HRefOption -> ShowS)
-> (HRefOption -> PackageName)
-> ([HRefOption] -> ShowS)
-> Show HRefOption
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HRefOption -> ShowS
showsPrec :: Int -> HRefOption -> ShowS
$cshow :: HRefOption -> PackageName
show :: HRefOption -> PackageName
$cshowList :: [HRefOption] -> ShowS
showList :: [HRefOption] -> ShowS
Show
instance Render HRefOption where
render :: HRefOption -> Text
render HRefOption
PDFRemoteStartView = Text
"pdfremotestartview"
render HRefOption
PDFNewWindow = Text
"pdfnewwindow"
render (HRefPage Int
n) = Text
"page=" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Int -> Text
forall a. Render a => a -> Text
render Int
n
newtype URL = URL String deriving Int -> URL -> ShowS
[URL] -> ShowS
URL -> PackageName
(Int -> URL -> ShowS)
-> (URL -> PackageName) -> ([URL] -> ShowS) -> Show URL
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> URL -> ShowS
showsPrec :: Int -> URL -> ShowS
$cshow :: URL -> PackageName
show :: URL -> PackageName
$cshowList :: [URL] -> ShowS
showList :: [URL] -> ShowS
Show
instance Render URL where
render :: URL -> Text
render (URL PackageName
str) = PackageName -> Text
forall a. IsString a => PackageName -> a
fromString PackageName
str
createURL :: String -> URL
createURL :: PackageName -> URL
createURL = PackageName -> URL
URL
instance IsString URL where
fromString :: PackageName -> URL
fromString = PackageName -> URL
createURL
href :: LaTeXC l => [HRefOption] -> URL -> l -> l
href :: forall l. LaTeXC l => [HRefOption] -> URL -> l -> l
href [HRefOption]
options URL
u = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
forall a b. (a -> b) -> a -> b
$ \LaTeX
t -> PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"href" [ [LaTeX] -> TeXArg
MOptArg ([LaTeX] -> TeXArg) -> [LaTeX] -> TeXArg
forall a b. (a -> b) -> a -> b
$ (HRefOption -> LaTeX) -> [HRefOption] -> [LaTeX]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap HRefOption -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex [HRefOption]
options
, LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ URL -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex URL
u
, LaTeX -> TeXArg
FixArg LaTeX
t ]
url :: LaTeXC l => URL -> l
url :: forall l. LaTeXC l => URL -> l
url URL
u = LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> l) -> LaTeX -> l
forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"url" [ LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ URL -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex URL
u ]
nolinkurl :: LaTeXC l => URL -> l
nolinkurl :: forall l. LaTeXC l => URL -> l
nolinkurl URL
u = LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> l) -> LaTeX -> l
forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"nolinkurl" [ LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ URL -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex URL
u ]
hyperbaseurl :: LaTeXC l => URL -> l
hyperbaseurl :: forall l. LaTeXC l => URL -> l
hyperbaseurl URL
u = LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> l) -> LaTeX -> l
forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"hyperbaseurl" [ LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ URL -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex URL
u ]
hyperimage :: LaTeXC l => URL -> l -> l
hyperimage :: forall l. LaTeXC l => URL -> l -> l
hyperimage URL
u = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
forall a b. (a -> b) -> a -> b
$ \LaTeX
t -> PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"hyperimage" [ LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ URL -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex URL
u , LaTeX -> TeXArg
FixArg LaTeX
t ]
autoref :: LaTeXC l => Label -> l
autoref :: forall l. LaTeXC l => Label -> l
autoref Label
l = LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> l) -> LaTeX -> l
forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"autoref" [ LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ Label -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex Label
l ]
nameref :: LaTeXC l => Label -> l
nameref :: forall l. LaTeXC l => Label -> l
nameref Label
l = LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> l) -> LaTeX -> l
forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"nameref" [ LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ Label -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex Label
l ]
packageOption :: LaTeXC l => Text -> l -> l
packageOption :: forall l. LaTeXC l => Text -> l -> l
packageOption Text
n l
p = Text -> l
forall l. LaTeXC l => Text -> l
raw Text
n l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
raw Text
"={" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l
p l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
raw Text
"}"
pdftex :: LaTeXC l => l
pdftex :: forall l. LaTeXC l => l
pdftex = Text -> l
forall l. LaTeXC l => Text -> l
raw Text
"pdftex"
pdftitle :: LaTeXC l => l -> l
pdftitle :: forall l. LaTeXC l => l -> l
pdftitle = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdftitle"
pdfauthor :: LaTeXC l => l -> l
pdfauthor :: forall l. LaTeXC l => l -> l
pdfauthor = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfauthor"
pdfsubject :: LaTeXC l => l -> l
pdfsubject :: forall l. LaTeXC l => l -> l
pdfsubject = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfsubject"
pdfcreator :: LaTeXC l => l -> l
pdfcreator :: forall l. LaTeXC l => l -> l
pdfcreator = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfcreator"
pdfproducer :: LaTeXC l => l -> l
pdfproducer :: forall l. LaTeXC l => l -> l
pdfproducer = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfproducer"
pdfkeywords :: LaTeXC l => l -> l
pdfkeywords :: forall l. LaTeXC l => l -> l
pdfkeywords = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfkeywords"
pdftrapped :: LaTeXC l => Maybe Bool -> l
pdftrapped :: forall l. LaTeXC l => Maybe Bool -> l
pdftrapped Maybe Bool
Nothing = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdftrapped" l
forall a. Monoid a => a
mempty
pdftrapped (Just Bool
t) = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdftrapped" (l -> l) -> (Bool -> l) -> Bool -> l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> l
forall l. LaTeXC l => Text -> l
raw (Text -> l) -> (Bool -> Text) -> Bool -> l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PackageName -> Text
pack (PackageName -> Text) -> (Bool -> PackageName) -> Bool -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> PackageName
forall a. Show a => a -> PackageName
show (Bool -> l) -> Bool -> l
forall a b. (a -> b) -> a -> b
$ Bool
t
pdfstartpage :: LaTeXC l => l -> l
pdfstartpage :: forall l. LaTeXC l => l -> l
pdfstartpage = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfstartpage"
pdfpagelayout :: LaTeXC l => PdfPageLayout -> l
pdfpagelayout :: forall l. LaTeXC l => PdfPageLayout -> l
pdfpagelayout = Text -> l -> l
forall l. LaTeXC l => Text -> l -> l
packageOption Text
"pdfpagelayout" (l -> l) -> (PdfPageLayout -> l) -> PdfPageLayout -> l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> l
forall l. LaTeXC l => Text -> l
raw (Text -> l) -> (PdfPageLayout -> Text) -> PdfPageLayout -> l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PackageName -> Text
pack (PackageName -> Text)
-> (PdfPageLayout -> PackageName) -> PdfPageLayout -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PdfPageLayout -> PackageName
forall a. Show a => a -> PackageName
show
data PdfPageLayout = SinglePage
| OneColumn
| TwoColumnLeft
| TwoColumnRight
| TwoPageLeft
|
deriving (PdfPageLayout -> PdfPageLayout -> Bool
(PdfPageLayout -> PdfPageLayout -> Bool)
-> (PdfPageLayout -> PdfPageLayout -> Bool) -> Eq PdfPageLayout
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PdfPageLayout -> PdfPageLayout -> Bool
== :: PdfPageLayout -> PdfPageLayout -> Bool
$c/= :: PdfPageLayout -> PdfPageLayout -> Bool
/= :: PdfPageLayout -> PdfPageLayout -> Bool
Eq, Eq PdfPageLayout
Eq PdfPageLayout =>
(PdfPageLayout -> PdfPageLayout -> Ordering)
-> (PdfPageLayout -> PdfPageLayout -> Bool)
-> (PdfPageLayout -> PdfPageLayout -> Bool)
-> (PdfPageLayout -> PdfPageLayout -> Bool)
-> (PdfPageLayout -> PdfPageLayout -> Bool)
-> (PdfPageLayout -> PdfPageLayout -> PdfPageLayout)
-> (PdfPageLayout -> PdfPageLayout -> PdfPageLayout)
-> Ord PdfPageLayout
PdfPageLayout -> PdfPageLayout -> Bool
PdfPageLayout -> PdfPageLayout -> Ordering
PdfPageLayout -> PdfPageLayout -> PdfPageLayout
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: PdfPageLayout -> PdfPageLayout -> Ordering
compare :: PdfPageLayout -> PdfPageLayout -> Ordering
$c< :: PdfPageLayout -> PdfPageLayout -> Bool
< :: PdfPageLayout -> PdfPageLayout -> Bool
$c<= :: PdfPageLayout -> PdfPageLayout -> Bool
<= :: PdfPageLayout -> PdfPageLayout -> Bool
$c> :: PdfPageLayout -> PdfPageLayout -> Bool
> :: PdfPageLayout -> PdfPageLayout -> Bool
$c>= :: PdfPageLayout -> PdfPageLayout -> Bool
>= :: PdfPageLayout -> PdfPageLayout -> Bool
$cmax :: PdfPageLayout -> PdfPageLayout -> PdfPageLayout
max :: PdfPageLayout -> PdfPageLayout -> PdfPageLayout
$cmin :: PdfPageLayout -> PdfPageLayout -> PdfPageLayout
min :: PdfPageLayout -> PdfPageLayout -> PdfPageLayout
Ord, ReadPrec [PdfPageLayout]
ReadPrec PdfPageLayout
Int -> ReadS PdfPageLayout
ReadS [PdfPageLayout]
(Int -> ReadS PdfPageLayout)
-> ReadS [PdfPageLayout]
-> ReadPrec PdfPageLayout
-> ReadPrec [PdfPageLayout]
-> Read PdfPageLayout
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS PdfPageLayout
readsPrec :: Int -> ReadS PdfPageLayout
$creadList :: ReadS [PdfPageLayout]
readList :: ReadS [PdfPageLayout]
$creadPrec :: ReadPrec PdfPageLayout
readPrec :: ReadPrec PdfPageLayout
$creadListPrec :: ReadPrec [PdfPageLayout]
readListPrec :: ReadPrec [PdfPageLayout]
Read, Int -> PdfPageLayout -> ShowS
[PdfPageLayout] -> ShowS
PdfPageLayout -> PackageName
(Int -> PdfPageLayout -> ShowS)
-> (PdfPageLayout -> PackageName)
-> ([PdfPageLayout] -> ShowS)
-> Show PdfPageLayout
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PdfPageLayout -> ShowS
showsPrec :: Int -> PdfPageLayout -> ShowS
$cshow :: PdfPageLayout -> PackageName
show :: PdfPageLayout -> PackageName
$cshowList :: [PdfPageLayout] -> ShowS
showList :: [PdfPageLayout] -> ShowS
Show)