packages feed

uniform-latex2pdf 0.1.5.1 → 0.1.5.2

raw patch · 4 files changed

+244/−226 lines, 4 filesdep +aesondep +doclayoutdep +doctemplatesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: aeson, doclayout, doctemplates, uniform-pandoc

API changes (from Hackage documentation)

- Uniform.Latex: [latBibliographyP] :: LatexParam -> Text
- Uniform.Latex: callProcessWithCWD :: Bool -> FilePath -> [String] -> Path Abs Dir -> ErrIO ExitCode
- Uniform.Latex: doclatexOptions :: Options
- Uniform.Latex: exitHandling :: ExitCode -> FilePath -> Int -> ErrIO ()
- Uniform.Latex: instance Data.Aeson.Types.FromJSON.FromJSON Uniform.Latex.LatexParam
- Uniform.Latex: makebiblio :: [Text]
- Uniform.Latex: postamble1 :: [Text]
- Uniform.Latex: preamble1 :: LatexParam -> [Text]
- Uniform.Latex: writePDF2 :: NoticeLevel -> Path Abs File -> Path Abs File -> Path Abs Dir -> ErrIO ()
+ Uniform.Latex: IndexEntry :: FilePath -> FilePath -> Text -> Text -> Text -> Text -> Text -> [IndexEntry] -> [IndexEntry] -> Int -> IndexEntry
+ Uniform.Latex: [abstract] :: IndexEntry -> Text
+ Uniform.Latex: [author] :: IndexEntry -> Text
+ Uniform.Latex: [content] :: IndexEntry -> Text
+ Uniform.Latex: [date] :: IndexEntry -> Text
+ Uniform.Latex: [dirEntries] :: IndexEntry -> [IndexEntry]
+ Uniform.Latex: [fileEntries] :: IndexEntry -> [IndexEntry]
+ Uniform.Latex: [headerShift] :: IndexEntry -> Int
+ Uniform.Latex: [ixfn] :: IndexEntry -> FilePath
+ Uniform.Latex: [latBakedDir] :: LatexParam -> Text
+ Uniform.Latex: [latBiblioTitle] :: LatexParam -> Text
+ Uniform.Latex: [latBibliography] :: LatexParam -> Text
+ Uniform.Latex: [latDainoVersion] :: LatexParam -> Text
+ Uniform.Latex: [latFn] :: LatexParam -> Text
+ Uniform.Latex: [latIndex] :: LatexParam -> IndexEntry
+ Uniform.Latex: [latLanguage] :: LatexParam -> Text
+ Uniform.Latex: [link] :: IndexEntry -> FilePath
+ Uniform.Latex: [title] :: IndexEntry -> Text
+ Uniform.Latex: data IndexEntry
+ Uniform.Latex: instance Data.Aeson.Types.FromJSON.FromJSON Uniform.Latex.IndexEntry
+ Uniform.Latex: instance Data.Aeson.Types.ToJSON.ToJSON Uniform.Latex.IndexEntry
+ Uniform.Latex: instance GHC.Classes.Eq Uniform.Latex.IndexEntry
+ Uniform.Latex: instance GHC.Classes.Ord Uniform.Latex.IndexEntry
+ Uniform.Latex: instance GHC.Generics.Generic Uniform.Latex.IndexEntry
+ Uniform.Latex: instance GHC.Read.Read Uniform.Latex.IndexEntry
+ Uniform.Latex: instance GHC.Show.Show Uniform.Latex.IndexEntry
+ Uniform.Latex: instance Uniform.Zero.Zeros Uniform.Latex.IndexEntry
+ Uniform.Latex: latexLangConversion :: Text -> Text
+ Uniform.WritePDF: callProcessWithCWD :: Bool -> FilePath -> [String] -> Path Abs Dir -> ErrIO ExitCode
+ Uniform.WritePDF: exitHandling :: ExitCode -> FilePath -> Int -> ErrIO ()
+ Uniform.WritePDF: writePDF2 :: NoticeLevel -> Path Abs File -> Path Abs File -> Path Abs Dir -> ErrIO ()
- Uniform.Latex: LatexParam :: Text -> Text -> Text -> Text -> Text -> Text -> Bool -> [Text] -> LatexParam
+ Uniform.Latex: LatexParam :: Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> IndexEntry -> Text -> LatexParam
- Uniform.Latex: [latBook] :: LatexParam -> Bool
+ Uniform.Latex: [latBook] :: LatexParam -> Text
- Uniform.Latex: [latContent] :: LatexParam -> [Text]
+ Uniform.Latex: [latContent] :: LatexParam -> Text
- Uniform.Latex: tex2latex :: LatexParam -> Text -> Text
+ Uniform.Latex: tex2latex :: NoticeLevel -> Path Abs Dir -> LatexParam -> Path Abs File -> ErrIO Text

Files

ChangeLog.md view
@@ -5,3 +5,6 @@    0.1.5 branch for ghc 9.2.5 0.1.5.1+0.1.5.2 added webroot in the tex2latex+0.1.5.3 changed to use pandoc Text.DocTemplates  +     https://hackage.haskell.org/package/doctemplates    
src/Uniform/Latex.hs view
@@ -13,21 +13,21 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DeriveGeneric  #-}+{-# LANGUAGE DeriveAnyClass  #-}  {-# OPTIONS_GHC -w #-}  module Uniform.Latex   ( module Uniform.Latex+--   , writePDF2   ) where -import qualified System.Exit as Sys-import qualified System.Process as Sys-import System.IO.Silently (silence)-import Uniform.Json-import UniformBase+import Uniform.PandocImports+import Text.DocTemplates as DocTemplates+import Text.DocLayout (render) --- import Data.Aeson--- import Data.Aeson.Types+import UniformBase+import Data.Aeson   data LatexParam = LatexParam@@ -35,237 +35,111 @@     { latTitle ::  Text       , latAuthor :: Text      , latAbstract ::  Text-    , latBibliographyP :: Text  -- the bibliio file -            -- problem with multiple files? +    , latLanguage :: Text+    , latFn :: Text         -- ^ the original source fn+    , latBakedDir :: Text -- ^ the baked dir +    , latDainoVersion :: Text +    , latBibliography  :: Text  -- the bibliio file +    , latBiblioTitle :: Text +            -- problem with multiple files? probably not required     , latStyle :: Text             -- is not used      , latReferences :: Text  -- ^ used only for citeproc to produce html, not for biblatex to produce pdf -    , latBook :: Bool  -- is this a long text for a book/booklet-    , latContent :: [Text] -- ^ a list of the .md files which are collected into a multi-md pdf+    -- , latReference_section_title :: Text -- ^ the text for the title of the ref section+    -- selection by language+    , latBook :: Text  -- is this a long text for a book/booklet+    , latIndex :: IndexEntry+    , latContent :: Text -- ^ the content to fill +    -- , latThema :: Path Abs File +    -- , latSnips :: [IndexEntry] -- ^ the snips      }-    deriving (Eq, Ord, Read, Show, Generic)+    deriving (Eq, Ord, Read, Show, Generic, ToJSON) + instance Zeros LatexParam where -    zero = LatexParam zero zero zero zero zero zero zero zero+    zero = LatexParam zero zero zero zero zero zero zero zero zero zero +                zero zero zero zero  -instance FromJSON LatexParam where-  parseJSON = genericParseJSON defaultOptions {-                fieldLabelModifier =  toLower' . drop 3 }+-- instance FromJSON LatexParam where+--   parseJSON = genericParseJSON defaultOptions {+--                 fieldLabelModifier =  toLower' . drop 3 } -doclatexOptions =-    defaultOptions-        { fieldLabelModifier = t2s . toLowerStart . s2t . drop 2-        }+-- doclatexOptions =+--     defaultOptions+--         { fieldLabelModifier = t2s . toLowerStart . s2t . drop 2+--         } -instance ToJSON LatexParam where-    toJSON = genericToJSON doclatexOptions+-- instance ToJSON LatexParam where+--     toJSON = genericToJSON -- doclatexOptions - why dropping 2? --- TODO create a default/minimal preamble --- and add preamble as parameter+data IndexEntry = IndexEntry +    { -- | the abs file path+      ixfn :: FilePath -- Path Abs File+    , -- | the link for this page (relative to web root)}+      link :: FilePath -- Path Rel File+    , title :: Text+    , abstract :: Text+    , author :: Text+    , date :: Text+    , content :: Text   -- in latex style, only filled bevore use+    -- , publish :: Maybe Text+    -- , indexPage :: Bool+    , dirEntries :: [IndexEntry] -- def []+    , fileEntries :: [IndexEntry] -- def []+    , headerShift :: Int   +    } deriving (Show, Read, Eq, Ord, Generic, Zeros)+    --  IndexTitleSubdirs | IndexTitleFiles  -tex2latex :: LatexParam ->  Text -> Text-{- ^ combine a snipped (produced from an md file) with a preamble to- produce a compilable latex file.- references are processed earlier (in  panrep)- keps the metadata--}-tex2latex latpar snips = concat'-        $ [ unlines' -                (preamble1 -                    -- (maybe ""  (s2t . toFilePath) $ latBibliographyP latpar)-                    -- (maybe "authoryear" id (latStyle latpar))-                    latpar-                )-          , snips -- concat' snips -- (map unTexSnip snips)-          , unlines' $-                -- if isNothing (latBibliographyP latpar)-                --     then [""]-                --     else-                makebiblio -                    -                            -- (fromJustNote "tex2latex 2wrqwe" $ latStyle latpar)-                            -- (case (latBibliographyP  latpar) of -                            --         Nothing -> error "tex2latex dwerdd00"-                            --         Just a -> s2t . toFilePath $ a -                            -- )-          , unlines' postamble1-          ]+-- instance Zeros IndexEntry where zero = IndexEntry zero zero zero zero zero zero zero zero zero ---   where ---     latpar2 = latpar{---             latBibliographyP = maybe ""  (s2t . toFilePath) $ latBibliographyP latpar,---             latStyle = maybe "authoryear" id $ latStyle latpar---             }--- todo  - macche einen file+instance ToJSON IndexEntry+instance FromJSON IndexEntry -preamble1 ::   LatexParam -> [Text]-preamble1   latpar =-    [ -- "%%% eval: (setenv \"LANG\" \"de_CH.utf8\")",-    --   "\\documentclass[a4paper,10pt,notitlepage]{scrbook}"-      "\\documentclass[a4paper,10pt,notitlepage]{scrartcl}"-      -- notitlepage makes title and abstract and text on same page-    , "\\usepackage{fontspec}"-    , -- "\\setsansfont{CMU Sans Serif}%{Arial}",  -- not for xetex-      -- "\\setmainfont{CMU Serif}%{Times New Roman}",-      -- "\\setmonofont{CMU Typewriter Text}%{Consolas}",-      "\\usepackage[ngerman]{babel}"-    , "\\usepackage{graphicx}"-    , "          \\setkeys{Gin}{width=.75\\linewidth,keepaspectratio}"-    -- set defaults for includegraphics, to make pictures not too big in pdf-    , "\\usepackage{makeidx}"-    -- , "\\usepackage{natbib}"-    , "\\usepackage[backend=biber," --  %% Hilfsprogramm "biber" (statt "biblatex" oder "bibtex")-    ,   "style=" <> latStyle latpar <> "," -- %% Zitierstil (siehe Dokumentation)-    ,   "natbib=true," --  %% Bereitstellen von natbib-kompatiblen Zitierkommandos-    ,   "hyperref=true," -- %% hyperref-Paket verwenden, um Links zu erstellen-    ,   "]{biblatex}"-    , "\\addbibresource{" <>  latBibliographyP latpar <> "}"-                    -- <> ", jobname.bib-    -- , "\\addbibresource{/home/frank/Workspace11/ssg/docs/site/dough/resources/BibTexLatex.bib}"-    -    -- , "\\newenvironment{abstract}{}{}" -- is this necessary+tex2latex :: NoticeLevel ->   Path Abs Dir -> LatexParam -> Path Abs File ->   ErrIO Text+-- ^ combine the latex template with the latexParam+-- the latexParam are previously filled with the content snip +-- and the index entries +-- needs the web root (dough dir) to find graphics -    -- , "\\usepackage{abstract}" -- not necessary-    , "\\makeindex"-    , "\\usepackage[colorlinks]{hyperref}"-    , "\\usepackage{bookmark}"  -- to avoid the need for rerun lualatex, must be loaded after hyperref-    , "\\providecommand{\\tightlist}{%"-    , "\\setlength{\\itemsep}{0pt}\\setlength{\\parskip}{0pt}}"-    , ""-    ,	"\\title{"<> latTitle latpar <> "}"-    ,   "\\author{" <> latAuthor latpar <> "}"-    -- does this produce nothing if the author field is empty? TODO-    ,   "\\date{}"  -- no date-    , "\\graphicspath{{/home/frank/bakedHomepage}}"  -- to find image the same place than html web root-    , ""-    , "\\begin{document}"-    , ""-    -- , "\\usepackage{filecontents}"-    -- ,       "\\begin{filecontents}{\\jobname.bib}"-    -- ,       latReferences latpar-    -- ,       "\\end{filecontents}"-    -- , ""-    , "\\maketitle"-	, "\\begin{abstract}" <> latAbstract latpar <> "\\end{abstract}"-    , "\\bigskip" -- a blank line after the abstract-    , ""-    ] ::-        [Text]+tex2latex debug   webroot latpar templFn = do +    when (inform debug) $ putIOwords ["tex2latex start for latFn", latFn latpar]+    -- let templFn = makeAbsFile "/home/frank/Workspace11/u4blog/uniform-latex2pdf/src/Uniform/latex.dtpl"+    when (inform debug) $ putIOwords ["tex2latex template fn", showT templFn]+    -- templtxt <- readFile2 templFn+    -- putIOwords ["tex2latex template", templtxt]+    templ1<- liftIO $ compileTemplateFile (toFilePath templFn) +    -- templ1<- liftIO $ compileTemplate mempty templ +    let templ3 = case templ1 of+            Left msg -> errorT ["applyTemplate4 error", s2t msg]+            Right tmp2 -> tmp2+    -- let latpar2 = latpar{latContent = snip}   already filled     +    let latparJ = toJSON latpar+    when (inform debug) $ putIOwords ["tex2latex latparJ", showT latparJ]+    let doc1 =  renderTemplate templ3 latparJ+    let doc2 = render Nothing doc1+    when (inform debug) $ putIOwords ["tex2latex result",  doc2]+    return doc2 -postamble1 = ["", "", "\\printindex", "\\end{document}"] :: [Text] -makebiblio ::   [Text] -makebiblio  =-    [ ""-    , ""-    -- , "\\bibliographystyle{plainnat}"-    , "\\printbibliography"-    -- , "\\bibliography{" <>  biblio <> "}"-    , ""-    ]  --writePDF2 :: NoticeLevel -> Path Abs File -> Path Abs File -> Path Abs Dir -> ErrIO ()--- convert the text in the file given (a full latex, exetnsion "tex") into a pdf--- in the second path--- refDir is the current working directory (which must be the directory--- where the intermediate files are produced---  likely wrong: from which images etc. are searched for )-writePDF2 debug fn fnres refDir = do-    -- -- check for locale-    -- loc <- callIO $ Sys.callProcess "locale" []-    -- putIOwords ["writePDF2 locale "]-    -- ls <- callIO $ Sys.callProcess "ls" []-    -- putIOwords ["writePDF2 ls "]--    -- process--    let infn =   getNakedFileName $ fn :: FilePath -- setExtension extTex fn :: Path Abs File-    when (informAll debug) $ when (inform debug) $ putIOwords-        [ "writePDF2 1 infn"-        , showT infn-        , "\n\t fnres"-        , showT fnres-        , "\n\t refDir (will be current working dir but seem not to work)"-        , showT refDir-        ]-    let dir1 = getParentDir fnres :: FilePath -    let out1 = "--output-directory=" <> dir1-    when (inform debug) $ putIOwords ["writePDF2 2 out1", showT out1]--    exit_code1 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not -        "lualatex"-        [out1, "-interaction=nonstopmode",  infn]-        refDir-    exitHandling exit_code1 infn 1--    exit_code2 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not -        "biber"-        [ infn]-        refDir-    exitHandling exit_code2 infn 2--    exit_code3 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not -        "makeindex"-        ["-q", infn]-        refDir-    exitHandling exit_code3 infn 3--    exit_code3 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not -        "lualatex"-        [out1, "-interaction=nonstopmode",  infn]-        refDir-    exitHandling exit_code3 infn 4--    when (inform debug) $ putIOwords ["writePDF2 end for", showT out1]--exitHandling :: Sys.ExitCode -> FilePath -> Int -> ErrIO ()-exitHandling exit_code filename step = do-    -- the count indicated the step count -    case exit_code of-        Sys.ExitSuccess -> return ()-        Sys.ExitFailure r -> do -                putIOwords ["callProcessWithCWD - failed - check for 1 log, for 2 blg " -                            , "show exit code", showT r, "step", showT step-                            -- , "\n\tif lualatex: 1 is normal, check log file "-                            -- , "\n\tif biber: 2 is normal, check blg file "-                            -- , "\n\tfor output file", showT filename-                            ]-                -- fail . show $ r-                return ()  -- lualatex does not deal with error information well - check log file +latexLangConversion :: Text -> Text +latexLangConversion inlang = +    case lang2 of +        "de" -> "ngerman"+        "en" -> "english"+        _ -> "english"+    where +        lang2 = take' 2 inlang  -    return ()------------------------------------- callProcess/callCommand with current working directory--- from http://hackage.haskell.org/package/process-1.6.10.0/docs/src/System.Process.html#callProcess--{- | Creates a new process to run the specified command with the given- arguments, and wait for it to finish.  If the command returns a non-zero- exit code, an exception is raised.-- If an asynchronous exception is thrown to the thread executing- @callProcess@, the forked process will be terminated and- @callProcess@ will wait (block) until the process has been- terminated.-- @since 1.2.0.0+-- https://tex.stackexchange.com/questions/82993/how-to-change-the-name-of-document-elements-like-figure-contents-bibliogr+-- for an automatic adaption based on the language+-- \renewcaptionname{ngerman}{\contentsname}{Inhalt}           %Table of contents+-- \renewcaptionname{ngerman}{\listfigurename}{Abbildungen}    %Figures+-- \renewcaptionname{ngerman}{\listtablename}{Tabellen}        %Tables+-- \renewcaptionname{ngerman}{\figurename}{Abb.}               %Figure+-- \renewcaptionname{ngerman}{\tablename}{Tab.}                %Table+-- \renewcaptionname{ngerman}{\bibname}{Literatur}             %Bibliography+--   \newcaptionname{ngerman}{\lstlistlistingname}{Quelltexte} %Table of listings +--   \newcaptionname{ngerman}{\lstlistingname}{Quelltext}      %Listing - wrapped in silence to avoid output on std out--}-callProcessWithCWD :: Bool ->  FilePath -> [String] -> Path Abs Dir -> ErrIO Sys.ExitCode--- | call a process silenced --- cwd1 is the curren working dir (where the intermediate files are--- but seems not to be the place where biblio is searched for-callProcessWithCWD silenced cmd args cwd1 = callIO -        . (if silenced then (silence) else (id)) $ do -- . silence $ do-    exit_code <--        Sys.withCreateProcess -- "callProcess"-            (Sys.proc cmd   args)-                { Sys.delegate_ctlc = True-                , Sys.cwd = Just . toFilePath $ cwd1-                }-            $ \_ _ _ p ->-                Sys.waitForProcess p-    return exit_code  
+ src/Uniform/WritePDF.hs view
@@ -0,0 +1,136 @@+----------------------------------------------------------------+--+-- Module      :  Uniform.latex+--+-- | convert latex to pdf +---------------------------------------------------------------+{-# LANGUAGE DoAndIfThenElse #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE DeriveGeneric  #-}++{-# OPTIONS_GHC -w #-}++module Uniform.WritePDF+  ( module Uniform.WritePDF+  ) where++import qualified System.Exit as Sys+import qualified System.Process as SysP+import System.IO.Silently (silence)+-- import Uniform.Json+import UniformBase+++++writePDF2 :: NoticeLevel -> Path Abs File -> Path Abs File -> Path Abs Dir -> ErrIO ()+-- convert the text in the file given (a full latex, exetnsion "tex") into a pdf+-- in the second path+-- refDir is the current working directory (which must be the directory+-- where the intermediate files are produced+--  likely wrong: from which images etc. are searched for )+writePDF2 debug fn fnres refDir = do+    -- -- check for locale+    -- loc <- callIO $ Sys.callProcess "locale" []+    -- putIOwords ["writePDF2 locale "]+    -- ls <- callIO $ Sys.callProcess "ls" []+    -- putIOwords ["writePDF2 ls "]++    -- process++    let infn =   getNakedFileName $ fn :: FilePath -- setExtension extTex fn :: Path Abs File+    when (inform debug) $ putIOwords+        [ "writePDF2 1 infn"+        , showT infn+        , "\n\t fnres"+        , showT fnres+        , "\n\t refDir (will be current working dir but seem not to work)"+        , showT refDir+        ]+    let dir1 = getParentDir fnres :: FilePath +    let out1 = "--output-directory=" <> dir1+    when (inform debug) $ putIOwords ["writePDF2 2 out1", showT out1]++    exit_code1 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not +        "lualatex"+        [out1, "-interaction=nonstopmode",  infn]+        refDir+    exitHandling exit_code1 infn 1++    exit_code2 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not +        "biber"+        [ infn]+        refDir+    exitHandling exit_code2 infn 2++    exit_code3 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not +        "makeindex"+        ["-q", infn]+        refDir+    exitHandling exit_code3 infn 3++    exit_code3 <- callProcessWithCWD True -- (not (inform debug))  -- silenced or not +        "lualatex"+        [out1, "-interaction=nonstopmode",  infn]+        refDir+    exitHandling exit_code3 infn 4++    when (inform debug) $ putIOwords ["writePDF2 end for", showT out1]++exitHandling :: Sys.ExitCode -> FilePath -> Int -> ErrIO ()+exitHandling exit_code filename step = do+    -- the count indicated the step count +    case exit_code of+        Sys.ExitSuccess -> return ()+        Sys.ExitFailure r -> do +                putIOwords ["callProcessWithCWD - failed - check for 1 log, for 2 blg " +                            , "show exit code", showT r, "step", showT step+                            -- , "\n\tif lualatex: 1 is normal, check log file "+                            -- , "\n\tif biber: 2 is normal, check blg file "+                            -- , "\n\tfor output file", showT filename+                            ]+                -- fail . show $ r+                return ()  -- lualatex does not deal with error information well - check log file +++    return ()++--------------------------------+-- callProcess/callCommand with current working directory+-- from http://hackage.haskell.org/package/process-1.6.10.0/docs/src/System.Process.html#callProcess++{- | Creates a new process to run the specified command with the given+ arguments, and wait for it to finish.  If the command returns a non-zero+ exit code, an exception is raised.++ If an asynchronous exception is thrown to the thread executing+ @callProcess@, the forked process will be terminated and+ @callProcess@ will wait (block) until the process has been+ terminated.++ @since 1.2.0.0++ wrapped in silence to avoid output on std out+-}+callProcessWithCWD :: Bool ->  FilePath -> [String] -> Path Abs Dir -> ErrIO Sys.ExitCode+-- | call a process silenced +-- cwd1 is the curren working dir (where the intermediate files are+-- but seems not to be the place where biblio is searched for+callProcessWithCWD silenced cmd args cwd1 = callIO +        . (if silenced then (silence) else (id)) $ do -- . silence $ do+    exit_code <-+        SysP.withCreateProcess -- "callProcess"+            (SysP.proc cmd   args)+                { SysP.delegate_ctlc = True+                , SysP.cwd = Just . toFilePath $ cwd1+                }+            $ \_ _ _ p ->+                SysP.waitForProcess p+    return exit_code +
uniform-latex2pdf.cabal view
@@ -5,13 +5,13 @@ -- see: https://github.com/sol/hpack  name:           uniform-latex2pdf-version:        0.1.5.1+version:        0.1.5.2 synopsis:       convert a latex `tex` file to a pdf description:    convert a latex file to pdf                  calling lualatex with the flags etc. necessary to include bibliography and footnotes category:       PDF Latex-homepage:       https://github.com/git@github.com:andrewufrank/u4blog.git#readme-bug-reports:    https://github.com/git@github.com:andrewufrank/u4blog.git/issues+homepage:       https://github.com/andrewufrank/u4blog.git#readme+bug-reports:    https://github.com/andrewufrank/u4blog.git/issues author:         Andrew Frank maintainer:     Andrew U. Frank <andrewufrank@gmail.com> license:        GPL@@ -23,20 +23,25 @@  source-repository head   type: git-  location: https://github.com/git@github.com:andrewufrank/u4blog.git+  location: https://github.com/andrewufrank/u4blog.git   subdir: uniform-latex2pdf  library   exposed-modules:       Uniform.Latex+      Uniform.WritePDF   other-modules:       Paths_uniform_latex2pdf   hs-source-dirs:       src   build-depends:-      base >=4.7 && <5+      aeson+    , base >=4.7 && <5+    , doclayout+    , doctemplates     , process     , silently     , uniform-json >=0.1.5+    , uniform-pandoc >=0.1.5.2     , uniformBase >=0.1.5   default-language: Haskell2010