2017-09-25 75 views
1

我試圖使用LaTeX圖表生成器包來生成圖表。繼教程here,我有一個文件名爲test.tex具有以下內容:解析Haskell圖表生成器錯誤

\documentclass[10pt]{article} 

\usepackage[backend=ps, extension=eps, outputdir=diagrams]{diagrams-latex} 
\usepackage{graphicx} 

\begin{document} 
\begin{diagram}[width=300,height=200] 
{-# LANGUAGE FlexibleContexts #-} 
dia = circle 1 
\end{diagram} 

\end{document} 

我創建了一個空目錄叫做diagrams並試圖編譯,只被告知,有什麼看起來是一個語法錯誤由diagrams-builder-ps自動生成的文件。

$ pdflatex --enable-write18 --shell-escape test.tex 
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex) 
\write18 enabled. 
entering extended mode 
(./test.tex 
LaTeX2e <2016/03/31> 
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded. 
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls 
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class 
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/size10.clo)) 
(/Users/nhalford/Library/texmf/tex/diagrams-latex.sty 
(/usr/local/texlive/2016/texmf-dist/tex/latex/moreverb/moreverb.sty 
(/usr/local/texlive/2016/texmf-dist/tex/latex/tools/verbatim.sty)) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/xkeyval/xkeyval.sty 
(/usr/local/texlive/2016/texmf-dist/tex/generic/xkeyval/xkeyval.tex 
(/usr/local/texlive/2016/texmf-dist/tex/generic/xkeyval/xkvutils.tex 
(/usr/local/texlive/2016/texmf-dist/tex/generic/xkeyval/keyval.tex)))) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/ifthen.sty)) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphicx.sty 
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphics.sty 
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/trig.sty) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/graphics.cfg) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/pdftex-def/pdftex.def 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/infwarerr.sty) 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)))) 
No file test.aux. 
(/usr/local/texlive/2016/texmf-dist/tex/context/base/mkii/supp-pdf.mkii 
[Loading MPS to PDF converter (version 2006.09.02).] 
) (/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ifluatex.sty) 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ifpdf.sty)) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty 
(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/grfext.sty 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty)) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/kvoptions.sty 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty 
(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/etexcmds.sty))) 
(/usr/local/texlive/2016/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)) 
Opening diagrams-latex stream diagrams/test-diagrams-latex-fig1.hs Error while compiling diagrams/test-diagrams-latex-fig1.hs 
/var/folders/2g/_6mplpfn4fl338wr3cj949440000gn/T/Diagram58258-0.hs:3:20: error: 
    parse error on input ‘-’ 



Package diagrams-latex Warning: Conversion of diagrams/test-diagrams-latex-fig1 
.hs failed. 


Package diagrams-latex Warning: Please convert diagrams/test-diagrams-latex-fig 
1.hs manually. 

(./test.aux)) 
No pages of output. 
Transcript written on test.log. 

嘗試在.hs文件直接運行diagrams-builder-psdiagrams-builder-cairo時,我也得到這個錯誤:

$ cd diagrams 
$ ls 
test-diagrams-latex-fig1.hs 
$ diagrams-builder-ps -w 300 -h 200 test-diagrams-latex-fig1.hs 
Error while compiling test-diagrams-latex-fig1.hs 
/var/folders/2g/_6mplpfn4fl338wr3cj949440000gn/T/Diagram58289-0.hs:3:20: error: 
    parse error on input ‘-’ 

$ diagrams-builder-cairo -w 300 -h 200 test-diagrams-latex-fig1.hs 
Error while compiling test-diagrams-latex-fig1.hs 
/var/folders/2g/_6mplpfn4fl338wr3cj949440000gn/T/Diagram58294-0.hs:3:20: error: 
    parse error on input ‘-’ 

$ cat test-diagrams-latex-fig1.hs 
{-# LANGUAGE FlexibleContexts #-} 
dia = circle 1 
$ 

不幸的是,系統刪除臨時文件.hs立即用解析錯誤,所以我無法檢查該文件,看看究竟是什麼導致了這個問題。

感謝您的幫助!

+0

您可以嘗試使用Ctrl + Z來暫停進程。這可以幫助您查看臨時文件。 – arrowd

+0

我試過你的'test.tex',但不能重現錯誤。你能粘貼'test-diagrams-latex-fig1.hs'的內容嗎? –

+1

順便提一下,你可能不想在'ps'或'cairo'後端使用'input'標誌(這會導致'.eps'文件的內容直接包含在LaTeX源文件中合理)。它旨在用於'pgf'後端。但在任何情況下,這不是導致你的問題。 –

回答

1

哦,我想我只是想出了什麼是錯的,儘管我不確定解決問題的最佳方法。關鍵是這一行:

/var/folders/2g/_6mplpfn4fl338wr3cj949440000gn/T/Diagram58289-0.hs:3:20: error:

注意,臨時文件的名稱是Diagram58289-0.hsdiagrams-builder調用openTempFilesee here),然後使用生成文件的基本名稱作爲模塊的名稱。所以Diagram58289-0.hs內容必須是這個樣子:

{-# LANGUAGE FlexibleContexts #-} 

module Diagram58289-0 where 

dia = circle 1 

的問題是,一個連字符是不是在一個模塊名稱有效,因此解析錯誤(果然,它是在第20欄第3行)。

儘管documentation for openTempFile表示創建的文件將具有名稱形式爲「fooXXX.ext其中XXX是一些隨機數」,顯然這不是在這裏發生的事情。實際上,它看起來像behavior of openTempFile changed recently;現在它將始終包含連字符。我猜這個行爲在base-4.10中改變了,所以它會顯示給任何使用GHC 8.2的人。我有created an issue on the diagrams-builder issue tracker跟蹤這個問題。目前,一種解決方案是降級到GHC 8.0,但這可能不是一個非常有吸引力的選擇。

+0

感謝您的幫助!事實上,降級到GHC 8.0已經解決了這個問題,儘管這當然不是一個理想的解決方案。 –

+0

當然!如果我們找到一個讓GHC 8.2重新開始工作的好方法,我會在這裏添加一條評論。 –

+1

這現在已在圖表生成器HEAD中修復:https://github.com/diagrams/diagrams-builder/commit/b44c754c15ab71d3350a6212ff73b3721b3b0e80。我會盡快推出一個新版本的bug fix。 –