2011-07-18 10 views
15

क्या साहित्यिक हास्केल समर्थन इंडेक्सिंग फ़ंक्शन नाम, टाइपक्लास और चर संदर्भों का समर्थन करता है? क्या कोई फ़िल्टर है जो मैं लिटरेट हास्केल स्रोत पर चला सकता हूं जो ऐसा करेगा और मुझे या तो एक अच्छा पीडीएफ मैनुअल या एक हाइपरलिंक एचटीएमएल दस्तावेज़ दे।साक्षर हास्केल: संदर्भ और अनुक्रमणिका

ये noweb और CWEB की वास्तव में अच्छी विशेषताएं हैं जो मुझे लगता है कि यह साक्षर हास्केल के व्यापक रूप से गोद लेगा।

उदाहरण के तौर पर, CWEB में word count program लिखा गया है। आइटम # 4 में पहले पृष्ठ पर कोड खंड को उस कोड के साथ फुटनोट किया गया है जहां कोड का उपयोग किया जाता है। एलएचएस भाग का समर्थन नहीं करता है लेकिन मैं जानना चाहता हूं कि कोड कहां इस्तेमाल किया जा रहा है:

  1. टिप्पणी func का वर्णन।

    func = id

    में प्रयुक्त: (XYZf, ABCg, धारा 1,5)

    func2 = indefined

    में प्रयुक्त: (ABCx, धारा 2,1)

और इसके अतिरिक्त एक सूचकांक जो सभी कार्यों को जोड़ता है नाम और वेरिएबल्स जहां उन्हें दस्तावेज़ में और अन्य कार्यों आदि द्वारा संदर्भित किया गया है।

+0

मुझे लगता है कि इसे लाटेक्स के रचनात्मक उपयोग के माध्यम से अनुकरण करना आसान होना चाहिए। – fuz

+0

वर्तमान में हैडॉक और ": जानकारी" कमांड मुझे एक टाइपक्लास के उदाहरण दिखाता है। लेकिन मैं नहीं देख सकता कि कार्य और चर का उपयोग कहाँ किया जाता है। – Deech

+0

"इंडेक्सिंग" द्वारा, क्या आपका मतलब एक इंडेक्स है जो प्रत्येक नाम को अपने दस्तावेज़ों से जोड़ता है, जैसे हैडॉक उत्पादन करता है? – Heatsink

उत्तर

1

लेटेक्स में कुछ संभावनाएं हैं, निम्नलिखित पैकेज को listings का उपयोग करता है, साथ ही मेडिन्डेक्स सभी कार्यों की सूची बनाने के लिए। साथ

\documentclass[a4paper,11pt,reqno,twoside,pdflatex,makeidx]{amsart} 

\usepackage[a4paper]{geometry} 

\usepackage{listings} 
\lstloadlanguages{Haskell} 

\lstset{ 
    flexiblecolumns=false, 
    basewidth={0.5em,0.45em}, 
    basicstyle=\ttfamily, 
    language=haskell, 
    % numbers=left, % optional numbering of code lines 
    firstnumber=last, 
    numberstyle=\tiny, 
    stepnumber=2, 
    numbersep=5pt, 
    index={fac,fac2} 
} 

\lstnewenvironment{code}{}{} 

\usepackage{hyperref} 

\title{The factorial function} 
\author{Federico Squartini} 
\date{} 


\makeindex 

\begin{document} 
\maketitle 
\section{Factorial function} 
\label{code:fac1} 
The factorial function can be defined as: 

\begin{code} 

fac 0 = 1 
fac n = n * fac (n-1) 

\end{code} 

\section{Factorial function in constant space} 
The code for the factorial defined section~\ref{code:fac1} uses $o(n)$ stack 
space. The following function uses constant space: 

\begin{code} 

fac2 n = go 1 1 
    where 
     go !acc i| i <= n = go (acc*i) (i+1) 
       | otherwise = acc 

\end{code} 

\printindex 
\end{document} 

संकलित:

pdflatex example.tex

makeindex example.idx

pdflatex example.tex इसके अलावा \ लेबल विभिन्न वर्गों के बीच क्रॉस-संदर्भ बनाने के लिए प्रयोग किया जाता है

pdflatex example.tex

परिणाम पीडीएफ here है। पीडीएफ फाइलों के उत्पादन के लिए यह बहुत अच्छा है। अन्य प्रकार के आउटपुट (उदा। एचटीएमएल) के लिए आपको pandoc के साथ लेटेक्स का उपयोग करना चाहिए।

एक और विकल्प पैडोक के मार्कडाउन सिंटैक्स का उपयोग करना है, जो विज्ञापन लेटेक्स कमांड (\ लेबल और मेइन्डेक्स) के साथ मिश्रित है। यह कार्य को सरल बनाना चाहिए और स्रोत फ़ाइलों में कम वाक्य रचनात्मक शोर का उत्पादन करना चाहिए।

+0

यह अविश्वसनीय रूप से अच्छा है लेकिन अंततः मैं जो खोज रहा हूं वह नहीं है क्योंकि इसे कार्यों के नाम निर्धारित करने के लिए लेबल का उपयोग करके मैन्युअल हस्तक्षेप की आवश्यकता होती है। लेटेक्स सबक के लिए धन्यवाद! – Deech

संबंधित मुद्दे