diff --git a/collects/meta/web/common/extras.rkt b/collects/meta/web/common/extras.rkt index db9d6c571c..fb4ca26a63 100644 --- a/collects/meta/web/common/extras.rkt +++ b/collects/meta/web/common/extras.rkt @@ -20,6 +20,9 @@ (provide TT) (define (TT . xs) @tt[style: "background-color: #dde;"]{@xs}) +(provide PRE) +(define (PRE . xs) + @pre[style: "background-color: #dde;"]{@xs}) ;; some tags with convenient separators (provide make-separated-tag (rename-out [the-separator ~]) diff --git a/collects/meta/web/www/learning.rkt b/collects/meta/web/www/learning.rkt index cc4cb0cae0..4f52cf6e84 100644 --- a/collects/meta/web/www/learning.rkt +++ b/collects/meta/web/www/learning.rkt @@ -1,6 +1,6 @@ #lang at-exp s-exp "shared.rkt" -(require "people.rkt" racket/list) +(require "people.rkt" "techreports.rkt" racket/list) (provide learning) (define learning @@ -87,8 +87,6 @@ live.} @p[align: 'right]{—@responsible-people}}) -(require "techreports.rkt") - ;; redirection page for the previous name of this page (define outreach+research @page[#:part-of 'learning diff --git a/collects/meta/web/www/techreports.rkt b/collects/meta/web/www/techreports.rkt index 6957aca046..e662edad22 100644 --- a/collects/meta/web/www/techreports.rkt +++ b/collects/meta/web/www/techreports.rkt @@ -1,18 +1,108 @@ #lang at-exp s-exp "shared.rkt" -(require "bib.rkt" (prefix-in - version/utils) racket/list +(require "bib.rkt" (prefix-in - version/utils) racket/list racket/string "people.rkt" "../download/data.rkt") +;; New style TR entries ------------------------------------------------------- + +(define (-all-techreports-) + (list (TR 1 'reference "Reference: Racket" '(mflatt plt) + #:description "Racket Programming Language") + (TR 2 'drracket "DrRacket: Programming Environment" '(robby plt) + #:description "DrRacket API" + #:note + @list{ + Preferred generic citation: + @blockquote[style: "margin-top: 0.5ex; margin-bottom: 0.5ex;"]{ + R. B. Findler, J. Clements, C. Flanagan, M. Flatt, + S. Krishnamurthi, P. Steckler and M. Felleisen. @br + @i{DrScheme: A programming environment for Scheme.} @br + Journal of Functional Programming, 12(2): 159–182, March 2002.} + Please cite the DrRacket technical report only if internal + details of DrRacket are concerned, otherwise use the DrScheme + reference.}) + (TR 3 'gui "GUI: Racket Graphics Toolkit" '(mflatt robby clements) + #:description "Racket Graphics Toolkit"))) + +(define (doc-url doc [fmt 'html] [ver 'recent]) + (format "http://download.racket-lang.org/docs/~a/~a/~a~a" ver fmt doc + (if (eq? 'html fmt) "" (format ".~a" fmt)))) + +(define (TR num docname title authors* #:description [desc title] + #:note [note #f]) + (define tr-name @list{PLT-TR-2010-@num}) + (define author-strings + (map (lambda (a) (if (eq? 'plt a) "PLT" (person-bibname (find-person a)))) + authors*)) + (define (link fmt [ver 'recent]) @a[href: (doc-url docname fmt ver)]{[@fmt]}) + (define (title-line link?) + @list{@big{@b{@(if link? cite-page values){@tr-name}}} + @|nbsp nbsp| @small{@link['html] @link['pdf]}}) + (define (content) + @list{@(add-between author-strings " and ") @br + @i{@title} @br + PLT Technical Report #@num @br + @(and note @div[style: "margin-top: 1ex; font-size: small;"]{ + @note})}) + (define ((refblock . title) . body) + @list{@h2{@title} + @blockquote{@PRE{@body}}}) + (define cite-page + @page[#:file (format "tr~a/" num) #:title tr-name #:part-of 'learning]{ + @h1{@title-line[#f]} + @p*{@blockquote{@big{@content}} + @~ For citations of the @desc, please use @TT{\cite{plt-tr@num}} in + LaTeX, or @TT|{@cite[plt-tr1]}| in Scribble, using the definitions + below. + @~ For references to specific releases and/or chapters, use + @TT{\cite[Version M.N]{plt-tr@num}} or + @TT|{@cite[(in-bib plt-tr1 "Version M.N")]}| instead. The year + in the bibliographic entry should be 2010 regardless of the + version's date.} + @@refblock{BibTeX}|{ + @techreport{plt-tr1, + title = {|@title}, + author = {|@(add-between author-strings " and ")}, + number = {|@tr-name}, + institution = {PLT Inc.}, + year = {2010}, + note = {\url{|@(get-resource-path cite-page #t)}} + }}| + @@refblock{Scribble}|{ + (define plt-tr1 + (make-bib #:title "|@title" + #:author |@(format "~s" (cons 'authors author-strings)) + #:date "2010" + #:location (techrpt-location "|@tr-name") + #:url "|@(get-resource-path cite-page #t)"))}| + @h2{Specific Versions} + @blockquote{ + @table[frame: 'box rules: 'rows cellpadding: 10]{ + @(for/list ([v (remove-duplicates + (map installer-version all-installers))]) + @tr{@td{@b{@v} @br @small{(@version->date[v])}} + @td{@TT{\cite[Version @v]{plt-tr@num}} @br + @TT|{@cite[(in-bib plt-tr1 "Version |@v")]}|} + @td{@link['html v], @link['pdf v]}})} + @p{@small{Reminder: the release dates should not be included in the + entry or the citation.}}}}) + @list{@dt{@title-line[#t]} + @dd[style: "margin-bottom: 1.5ex;"]{ + @content}}) + (provide techreports) (define techreports - @page[#:file "techreports/" #:part-of 'learning - #:title "Technical Reports"]{ - @p{PLT publishes technical reports about some of its tools and libraries so - that scholars who wish to give proper credit to some of our innovations - have a definite citation. Each entry below provides the full pdf and a - bibtex entry; some of the bibtex entries provide additional citations to - published papers.} - @make-bib-table{}}) + @page[#:file "tr/" #:title "PLT Technical Reports" #:part-of 'learning]{ + @p*{ + @~ For citations of generic pieces of the Racket infrastructure, please use + @TT{\cite{plt-tr1}}, @TT{\cite{plt-tr2}}, etc. in LaTeX, or + @TT|{@cite[plt-tr1]}|, @TT|{@cite[plt-tr2]}|, etc. in Scribble, with the + BibTeX and Scribble entries provided in the web pages below. + @~ For references to specific releases and/or chapters of the language, use + @TT{\cite[Version M.N]{plt-tr1}} or + @TT|{@cite[(in-bib plt-tr1 "Version M.N")]}| + instead.} + @dl{@(add-newlines (-all-techreports-))}}) ;; Old style TR entries, for compatibility ------------------------------------ @@ -257,8 +347,7 @@ (lambda () (person-bibname (find-person author))))]) (if (string? r) r - (let ([r (apply string-append - (add-between (map author->string r) " and "))]) + (let ([r (string-join (map author->string r) " and ")]) (hash-set! authors* author r) r)))) @@ -321,14 +410,23 @@ (web-path "www" "techreports" file)) file)) -(define (make-bib-table) - (apply table width: "98%" cellspacing: 0 cellpadding: 6 border: 0 - align: 'center style: "font-size: 75%;" - (for/list ([bib bibs] [n (in-naturals)]) - @tr[valign: 'top bgcolor: (if (even? n) "#e0e0e0" "white")]{ - @td[style: "white-space: nowrap;"]{@(hash-ref bib 'number)} - @td[align: 'left]{@i{@(without-braces (hash-ref bib 'title))}} - @td{@(bib-author bib)} - @td{@a[href: (make-bib-file bib)]{[bib]}@|nbsp|@; - @a[href: (hash-ref bib '#:pdf-url)]{[pdf]}@|nbsp|@; - @a[href: (hash-ref bib '#:html-url)]{[html]}}}))) +(define old-techreports + @page[#:file "techreports/" #:title "Old PLT Technical Reports" + #:part-of 'learning]{ + @p{@strong{Note:} the entries on this page are outdated, please see the new + @techreports page.} + @p{PLT publishes technical reports about some of its tools and libraries so + that scholars who wish to give proper credit to some of our innovations + have a definite citation. Each entry below provides the full pdf and a + bibtex entry; some of the bibtex entries provide additional citations to + published papers.} + @table[width: "98%" cellspacing: 0 cellpadding: 6 border: 0 + align: 'center style: "font-size: 75%;"]{ + @(for/list ([bib bibs] [n (in-naturals)]) + @tr[valign: 'top bgcolor: (if (even? n) "#e0e0e0" "white")]{ + @td[style: "white-space: nowrap;"]{@(hash-ref bib 'number)} + @td[align: 'left]{@i{@(without-braces (hash-ref bib 'title))}} + @td{@(bib-author bib)} + @td{@a[href: (make-bib-file bib)]{[bib]}@|nbsp|@; + @a[href: (hash-ref bib '#:pdf-url)]{[pdf]}@|nbsp|@; + @a[href: (hash-ref bib '#:html-url)]{[html]}}})}})