<<

32 TUGboat, 32 (2011), No. 1

LATEX at Distributed Proofreaders 20th Centuries. Further, DP can process any and the electronic preservation for which copyright clearance is obtainable. of mathematical literature willing and able to grant perpetual, non-exclusive, at worldwide rights to distribute their in elec- tronic form on a royalty-free basis can, at no cost to Andrew Hwang themselves, have their books converted to electronic Abstract form and made available at PG. A self-sustaining LATEX community at DP stands equipped to generate A small but growing effort is underway at the volun- a lasting scientific, cultural, historical, and educa- teer web site Distributed Proofreaders (DP, at www. tional resource. pgdp.net), with the goal of creating high-quality LATEX files of selected mathematical books for distribution by Project Gutenberg (PG). 2 Techniques of production This article introduces DP and PG, describes how Broadly speaking, “electronic preservation” may re- books are transcribed at DP, and gives an overview fer to anything from scanning a book and distributing of current LATEX coding strategies. bitmap image files (jpegs or pngs) to preparing an ac- 1 Introduction curate, archival-quality textual representation, such A Public domain mathematical works are a precious as a well-designed LTEX source file. resource. Electronic preservation potentially makes Scanning a book is relatively cheap and fast. A historical mathematical literature available to anyone book of a few hundred can be scanned manually with a . By contrast, printed books and and non-destructively in about an hour by one indi- journals stored in university suffer from vidual without special skills or expensive equipment. constraints ranging from limited access to physical Books can also be scanned destructively in bulk at degradation. high speed by cutting off the spine and running the This article describes a small but growing ini- pages through a mechanical feeder. At this writing tiative to harness “crowdsourcing” for the purpose and for the foreseeable future, the vast majority of of transcribing public domain mathematical works mathematical consist of bulk-scanned images. Once a book has been scanned, raw text may be into LATEX. The existing web-based infrastructure is provided by Distributed Proofreaders (DP, at www. extracted fairly easily with optical character recog- pgdp.net). The completed books are distributed nition (OCR) . Not surprisingly, however, by Project Gutenberg (PG, at www.gutenberg.org). mathematics is rendered poorly by OCR. As a re- sult, raw OCR text of a mathematical book is all but The LATEX work at DP and the availability of LATEX source files for mathematical projects at PG are not unusable for a casual reader. widely-known. Please share this article with inter- At DP, OCR text is the input material. Human ested students and colleagues, and explore the sites volunteers carefully proofread the text against the A yourself. page scans, then add LTEX markup. The end result is an accurate textual and semantic representation Since 2008, more than fifty LATEX books have A been produced at DP [1]. Recently-completed exam- of the book. Though producing a high-quality LTEX ples range in subject matter and sophistication from source file requires on the order of an hour of skilled popular accounts to to research mono- work per page, the benefits are substantial. For the A graphs. Titles include: typical reader, a LTEX-produced PDF file is text- searchable, magnifiable on screen without loss of Mathematical Recreations and Essays by W. W. • quality, easily-hyperlinked, and yields camera-quality Rouse Ball, printed output. To the benefit of readers without • Philosophiae Naturalis Principia Mathematica fast access, a LATEX-produced PDF file is by Sir Isaac Newton, about one-tenth the size of a of page scans; • A Short Account of the History of Mathematics a compressed source file is smaller still. Thousands by W. W. Rouse Ball, of textual books can be fit onto a DVD, compared • Calculus Made Easy by Sylvanus P. Thompson. with a couple hundred books made from scanned The medium-term goals for LATEX book produc- images. A good-sized can therefore be easily tion at DP are twofold: First, to recruit and build a and inexpensively distributed worldwide by ordinary community of LATEX-knowledgeable volunteers; and post. Finally, if the coding is well-planned, a LATEX second, to select and prepare suitable books from source file can serve as an archival representation of the mathematical literature of the 19th and early the book.

Andrew Hwang TUGboat, Volume 32 (2011), No. 1 33

2.1 Project Gutenberg and most of the mathematical markup, and is far from Distributed Proofreaders being machine compilable. The formatting rounds Founded by Michael Hart at the University of Illinois add the necessary markup, including mathematics, in 1971, Project Gutenberg is the world’s oldest footnotes, and sectional divisions. The output of electronic library. PG is dedicated to the storage and the formatting rounds is, with minor modifications, distribution of public domain ebooks. machine compilable once the appropriate preamble Distributed Proofreaders was founded in 2000 has been prepended, but is still far from a completed by Charles Franks to produce ebooks for PG. The ebook. The remaining work on a project, generically site source code, written in PHP, is free software termed “post-processing” and typically comprising released under the GNU GPL. The project home- about 25–35% of the total production time, is per- page is dproofreaders.sourceforge.net. At this formed off-line. writing, there are at least six independent “DP sites” 2.2 Coding for longevity using some version of the code base. In addition to the DP site at www.pgdp.net, there are smaller Data formats are a troublesome fact of life for long- “sister” DP sites based in Canada and Europe, which term electronic encoding and storage of information. operate under the copyright laws of their respective Electronic documents become useless when there regions. Due to lack of infrastructure and volun- is no easy, reliable way to recover the textual and teers, LATEX projects are currently processed only presentational information stored in a file format. at www.pgdp.net, and the present article describes Storage in an open, non-proprietary, plain text only activities at this DP site. format guards against lossage due to lack of decoding DP currently boasts a few hundred volunteers software. The textual content of a LATEX source file active on a near-daily basis, and produces a little will remain accessible as long as can read over half of the new ebooks in PG’s collection. At plain text in a present-day encoding. However, LATEX this writing, the number of volunteers who work markup alone does not guarantee longevity; far from on LATEX is about 1% of the “population”, and on it. Used as a WYSIWYG tool, even the most capable average about 20 new LATEX books are posted to PG markup language cannot capture more than a book’s every year. visual appearance. The DP site at www.pgdp.net was designed and For longevity, flexibility, and ease of mainte- built entirely by volunteers, and is currently staffed nance, a source file needs to separate four interrelated by volunteers. DP-Canada, DP-Europe, and Project but distinct aspects: (i) textual content (maintaining Gutenberg are also largely or entirely built and run readability by both people and machines), (ii) seman- by volunteers. tic structure, (iii) visual presentation and layout, and (iv) implementation in terms of software. DP process overview Carefully-planned macros meet all four require- An ebook starts its life at DP as raw OCR output. ments, embodying these multiple layers of structure, The page-length pieces of OCR text and the page both clarifying the code and simplifying the task scans are loaded into a database hosted at DP. Work- of future maintainers who wish to convert today’s ing one page at a time, volunteers at the DP web LATEX files into source files suitable for the typeset- site are presented with a scanned page image side-by- ting software of 2050 and beyond. Technical details side with the corresponding OCRed text in an editor of DP’s current practices are surveyed in Section4 window. After correcting the text and adding LATEX below. macros, proofreaders check the page back into the database. Once all the pages of a book have been re- 3 The structure of DP viewed and corrected, the site software concatenates Since the production of mathematical ebooks at DP the pages into a raw ebook file. A single volunteer takes place within an infrastructure designed primar- performs final polishing and verification, then sub- ily for HTML-formatted projects, it is worth describ- mits the completed ebook to Project Gutenberg. ing the general organization and operation of DP in The actual path of a book through DP is a bit parallel with the special requirements and practices more involved. The distributed work is separated of the LATEX community. into “proofing” and “formatting” stages. Proofing fo- DP is primarily an English-language site. For cuses on verifying the correctness of the raw words in LATEX projects, English-language books are gener- the text, the general dictum being “match the scan”. ally preferred, though a number of books in French Because most DP volunteers do not speak LATEX, and German have also been produced. The site the text file at the end of the proofing rounds omits code currently restricts source files to the Latin-1

LATEX at Distributed Proofreaders 34 TUGboat, Volume 32 (2011), No. 1

(iso 8859-1) encoding, so a book’s language must of a project have completed a round, the project is be representable in Latin-1. (DP-Canada and DP- made available in the next round. At any given time, Europe can handle utf-8 with some limitations.) a project is “in” a specific round, and each page of a There are four major phases of ebook production project is proofed the same number of times. at DP: content providing, proofing, formatting, and In the proofing rounds, volunteers ensure that post-processing. Each has its own time commitments, the characters in the text file match the characters skill set, and access requirements [2]. in the page scan. In other words, the focus is on content. 3.1 Content providing In a LATEX project, the first proofing round typi- A content provider (CP) conveys a collection of page cally involves considerable “type-in”, or manual entry scans, possibly including OCR output, to an experi- of characters, because OCR handles mathematics so enced DP volunteer known as a “project manager”. poorly. A single page may require 10 or 15 minutes’ Scans may be “harvested” from a third party such as work, a substantial fraction of the expected total the , or may be scanned by the CP.A preparation time. “copyright clearance” must be obtained from Project Gutenberg before scans are uploaded to DP [4]. 3.3 Formatting If would like to have a specific work tran- After the proofing rounds, each page goes through scribed at DP, please contact the of this two rounds of formatting, F1 and F2. The formatting article or post in the “LATEX Typesetters Team” in rounds capture the book’s structure: and the DP forums. section headings, quotations, footnotes and sidenotes, tables, and figures. In LATEX projects, mathematics Selecting suitable books is coded primarily by the formatters. Books should normally be selected primarily for ex- For a LATEX project, F1 entails a similar amount pected popularity or value as scholarly references. A of type-in to P1. Additionally, a “formatting coordi- new LATEX project should not be initiated unless a nator” (see Section4) provides a “working preamble” volunteer expresses the commitment to post-process. for the project. Volunteers are expected to test- Given the current size of the LATEX community compile each page before marking it as “done”, and at DP, the best books are in the vicinity of 250 pages to check the compiled code visually against the page or fewer, and contain mostly uniform, straightfor- scan. This amount of work makes F1 the most time- ward typography, and only mathematics that can be consuming round for LATEX, about 10–20 minutes’ easily typeset using the AMS math environments. work per page. Books should generally be avoided if they con- tain extensive typography that is relatively difficult 3.4 Post-processing to render in LATEX, such as long division, tabular After a project leaves the rounds, the distributed data with many multi-row or multi-column align- phase is complete. The remaining work is done by a ments, multi-column lists of exercises and answers, volunteer playing the role of “post-processor” (PPer). typography that changes at each paragraph (as in a A PPer downloads the formatted concatenated geometry ), or large numbers of illustrations, text and polishes it into an ebook, regularizing and particularly inset diagrams. finalizing the LATEX code. Normally, a PPer becomes involved with a project before the project reaches the 3.2 Proofing formatting rounds and serves as the formatting coor- The “distributed” portion of ebook production at dinator, ensuring the project is formatted according DP has well-developed guidelines designed to allow to the PPer’s wishes. most pages of most books to be processed uniformly. PPing is complex and time-consuming, requiring When questions arise of how to handle unusual con- fairly extensive planning and about 10–20 minutes’ structs, volunteers may communicate with each other work per page for a modestly-complex book. At the and with the project manager via phpBB bulletin same time, PPing provides an outlet for organiza- boards. Each project has a dedicated discussion tional creativity and typographical artistry, and is thread. There are also dozens of forums for general therefore one of the most satisfying and intellectually questions. challenging tasks at DP. Normally, each page of a book passes through three rounds of proofing, named P1–P3, with succes- 3.5 Access requirements sive passes made by volunteers having greater expe- Access to various activities at DP is granted according rience and ability at catching errors. Once all pages to time on site, number of pages processed, and/or

Andrew Hwang TUGboat, Volume 32 (2011), No. 1 35

peer review of one’s work. Each DP site has its own rent practices for coding LATEX at DP. Most of these set of certification requirements. Criteria for the DP ideas are not new, but neither do they seem widely- site at www.pgdp.net are described here. articulated. These strategies need not be studied New volunteers are immediately granted access except by volunteers who intend to post-process, but to P1. Access to P2 is granted once a volunteer their rationale must be consciously and continually has been registered for 21 days and has proofed at remembered when working at DP, where the page-at- least 300 pages. Certification to work in the third a-time interface naturally leads a formatter to focus round of proofing is granted by application only, detrimentally on small-scale document structure. upon satisfactory performance under detailed human evaluation of the volunteer’s proofing work. In order 4.1 Textual content to apply for P3, a volunteer must have been registered When a scanned page is OCRed, the output text at DP for at least six weeks, and have proofed at least 150 pages in P2, and formatted at least 50 pages. contains the same line breaks as the printed book. F1 access is granted with access to P2. F2 certi- Of course, the original pagination and line breaks need not and cannot be retained in a compiled PDF fication is granted by application only, after detailed file. To the extent possible, however, line and page human evaluation of the volunteer’s formatting work. A In order to apply for F2, one must have been regis- breaks are retained in the LTEX source file. At DP, tered at least 91 days and have formatted at least hyphenated words are rejoined, but otherwise there is 400 pages. no rewrapping of lines. Page separators are retained as LAT X comments. The source file is therefore a Access to PP is granted pro forma by request af- E reasonable visual copy of the original book, facilitat- ter 400 pages have been formatted. New PPers must ing the tasks of proofreaders and eventual document submit their completed projects for detailed inspec- maintainers. tion by an experienced “PP Verifier” (PPVer). The Page and footnote numbers depend upon the PPVer assigns a “grade” to the project based on its length and difficulty, and the number of errors present document’s pagination, and are not retained in the in the uploaded project. After completion of eight compiled output file. Other than this, textual con- tent is retained in the document body. Particularly, consecutive projects with sufficiently high grade, a LAT X’s auto-numbering is suppressed. Chapters, sec- PPer is given “direct upload” status, and may upload E tions, numbered items, theorems, and equations are projects directly to PG without supervision. tagged manually, usually with the original number- Time commitments ing or labels represented as macro arguments. These labels have been assigned in the print version, and Volunteers at DP devote as little or as much time are de facto part of the original text. to the site as they like. A page is the smallest unit Structural macros, e.g. \Chapter, \Section, of proofing or formatting, and for a LAT X project E \Figure, \begin{Theorem} and \end{Theorem}, or typically entails 5–20 minutes’ work. Many volun- \Proof, normally generate text similar to the macro teers do just one page whenever they can, perhaps name, and do not generate more text than necessary. every week or few. Others find the work mildly but For example, even if most proofs begin with the pleasantly addictive, and work an hour or more at a phrase: “Proof: We must show that. . . ”, a \Proof sitting, several times per week. macro would generate the word “Proof” in boldface, Compared to proofing and formatting, PPing but would not generate the phrase “We must show involves an extended commitment of time and energy. that”. The aim of LAT X coding at DP is to sepa- An experienced PPer may be able to complete a 150- E rate content and typographical presentation in the page book in as little as 40 hours, but longer or document body and preamble, respectively. To the more complex books can easily absorb upward of extent possible, the source file should be searchable 100 hours. for words and phrases appearing in the original book. Documentation and LATEX requirements Detailed knowledge of the preamble should not be prerequisite to the textual content of the The guidelines for proofing, formatting, and post- book from the document body. processing LATEX are detailed in a set of manuals [5]. These and other LATEX-related information applicable to DP may be found in the DP wiki [3]. 4.2 Semantic structure A document body should contain few commands A 4 DP LTEX coding strategies explicitly specifying how a piece of text is to be type- This section discusses, in some technical detail, cur- set. Instead, the body contains mostly mnemonic,

LATEX at Distributed Proofreaders 36 TUGboat, Volume 32 (2011), No. 1

high-level structural information: “this is a chapter”, cross-referencing effects. “this is a theorem”, “this is a figure”, and so forth. This technique beneficially centralizes the - The goal of semantic coding frequently turns ument’s dependence on the compilation engine. If out to be non-trivial to implement. Proofers and typesetting software changes, only the macro defini- formatters see only one page of a book at a time. tions need modification, not every occurrence in the How, without inspecting a large fraction of pages, document body. Amplifications of this strategy are is a formatter to know the meaning of a boldface, used at DP to help ensure stylistic uniformity, and run-in heading, or of centered italics? What if only to match the original typography with relative ease. some theorem statements are italicized; are the italics significant, or was the typesetter merely inconsistent? 4.3 Visual presentation At DP, a “formatting coordinator” inspects the DP volunteers express a wide range of opinions on entire book before the project leaves the proofing how much effort should be spent making a book rounds, notes the major semantic structures and any resemble the original, or whether ebooks should be typographical irregularities, then writes a “working optimized for (two-sided layout, generous preamble” for use during the formatting rounds. Ide- margins) or for ebook readers (single-sided layout, ally, the working preamble macros satisfy a number very tight margins, colored ). of disparate requirements. They are easy to remem- There is an obvious trade-off between attractive ber, do not require formatters to type much, give a layout on one hand and flexibility in accommodating good approximation to the page scan when a format- different ebook readers on the other. This trade-off ter test-compiles a single page, and capture enough is strongly dependent on the original book; floating information to match the book’s global typography tables and illustrations, or even complex mathemati- (running heads, table of contents entries, PDF book- cal displays, are difficult to lay out well unless the marks, hyperlinks, and the like) in post-processing. text block size is known. As ebook readers with For example, the text of a chapter heading might varying screen sizes proliferate, post-processors will progress through the proofing and formatting rounds encounter increasing difficulty in ensuring that fin- like this: ished ebooks look good on a variety of hardware. Centralized structural coding described above CHAPTER III: Curvature % Proofed facilitates the task of creating a flexible, camera- \CHAPTER{III: Curvature} % Formatted quality ebook. \Chapter{III}{Curvature} % Uploaded Structural coding also sidesteps an issue that All the typographical work is centralized in macro plagues WYSIWYG authors: Ensuring visual consis- definitions. tency. If section headings are printed in centered As suggested by this code snippet, structural boldface type and these typographical attributes are macros in the working preamble should not normally specified explicitly for each section, the section head- be LATEX commands such as \chapter. Sec- ings are all but impossible to make identical, or to tioning commands of LATEX’s document classes are tweak and maintain. designed with different aims than than are required These facts of document design are easy to see at DP: They provide unwanted numbering, and are at the level of authoring an entire document, but often non-trivially integrated into the document class are remarkably easy to forget when one is working using modern typographical assumptions. In a DP- one page at a time in the DP formatting rounds. era book, for example, a new chapter might not re-set The experience of years past shows that even experi- the running head, might not start recto, and might enced LATEX coders incline toward hard-coding visual not even begin on a new page. However, redefining markup under real-life circumstances. the \chapter command accordingly also changes the behavior of the table of contents, preface, appendices, 4.4 Implementation and index, probably in undesired ways. In addition to the previously-noted benefits of sep- Instead, it’s preferable to add an interface layer arating structure, presentation, and content, well- between structural macros in the body and their planned semantic coding and encapsulating interfaces implementation in terms of LATEX commands. A can guard against changes to external software. \Chapter command in the working preamble might ALATEX source file obviously depends for com- be implemented with the LATEX \section* com- pilability on external packages and the LATEX kernel mand. In post-processing, only the macro definition, itself. For the LATEX kernel and “core” packages, not the formatters’ code, needs to be modified in the need for backward compatibility helps ensure order to achieve the necessary typographical and that user interfaces do not change. By contrast,

Andrew Hwang TUGboat, Volume 32 (2011), No. 1 37

kernel and package internals are all but guaranteed Naturally, a macro system must be designed to be re-written beyond recognition on a time scale from the top downward, based on inspection of the of decades. entire book. First determine the necessary semantic On occasion in years past, LATEX-knowledgeable structures, then find and factor out typographical post-processors at DP have concluded that a book’s and cross-referencing operations common to two or typography can be matched elegantly by redefining more structural operations, and finally implement macros in a standard document class. In retrospect, any common operations in terms of LATEX commands. this strategy is ill-advised: It relies on software in- The three layers of abstraction above are impor- ternals over which the post-processor has no control. tant mostly when one wishes to mimic the printed At DP, the goals of structural markup and con- appearance of the original book. When a project sistent visual presentation are achieved through fac- warrants this level of coding, the typographical ap- toring of typographical “responsibilities”. A three- pearance can be fine-tuned easily, accurately, and level scheme, inspired by object-oriented program- consistently. ming, has proven itself over dozens of projects. For simpler projects, this scheme may be overly elaborate. Further, if the default appearance of a Structural macros At the highest level, used in standard document class is acceptable, coding seman- the document body, are purely structural macros tically in terms of LAT X’s sectioning macros may be needed to mark the book’s semantics: , E \Chapter entirely workable. , , and the like. \Section \Proof Using primarily structural macros in the docu- Semantic operations In even a moderately com- ment body helps ensure the book will be machine- plicated book, multiple sectioning commands need to convertible to other formats, even formats not yet in perform identical abstract typographical operations, existence, with as little fuss as possible. No one holds such as “set the running heads”, “write an entry to the illusion that DP’s LATEX projects can be trivially the table of contents”, “create a PDF ”, converted to other formats. However, a thoughtfully- “include a graphic with a default width from a speci- coded ebook should be convertible to a new format fied directory”, or “get to a recto page, clearing the with perhaps a few hours’ work, compared to the stale running head on the preceding verso page if nec- dozens or hundreds of hours required to digitize the essary”. For flexibility, visual consistency, and ease project initially. of maintenance, these operations should be factored out. Macros at this second level are not normally Floats and inset illustrations called directly in the document body, but only in the Figures, tables, and complex displayed mathemat- preamble, in the definitions of structural macros. ics are simply a problem for current ebook readers, Depending on the book’s complexity, common whose screens may be only a few inches wide. features among semantic macros may be best fac- Inset illustrations are a common cause of “brit- tored out as well. Generally, therefore, even second- tle” documents, code whose compiled quality de- level macros might not be implemented directly in pends sharply on the size of the text block. The terms of LATEX commands. wrapfig package is powerful, but has relatively tight constraints on how it can place diagrams. In partic- Visual implementation The commands used to ular, a single paragraph cannot contain more than effect the visual presentation lie at the third level. one wrapfigure environment, and mid-paragraph These include both abstract operations such as “set placement requires manual coding. the format and location of the page numbers” or It is currently considered acceptable at DP to “select the font of the running heads”, and specific, hard-code the placement of wrapped illustrations, concrete operations such as “make this text boldface”. but arguably it is more robust (though less pleasant These macros, at last, are implemented in terms typographically) to use ordinary figure environ- A of standard LTEX commands, including facilities ments instead. provided by external packages. DP-specific coding tricks 4.5 Remarks and caveats Proofers and formatters at DP commonly make in- Abstraction and encapsulation do not always buy line notes regarding misspellings, visual obscurities, flexibility, and should not be used needlessly. Stan- notational inconsistencies, even factual errors. Two dard LATEX macros, such as mathematical symbols, simple macros, \DPnote and \DPtypo, are used to AMS displayed math environments, and \footnote leave notes in the source file. \DPnote is a one- commands are used routinely. argument null macro. \DPtypo accepts two argu-

LATEX at Distributed Proofreaders 38 TUGboat, Volume 32 (2011), No. 1

ments, the original text and the putative correction. done by ten volunteers in a few days. Encouraging Changes are trivially switched on (or off) by chang- students to work at DP can both provide valuable ing one line of preamble code. Future maintainers LATEX coding practice and serve as an introduction can easily review all such changes by searching the to document design and planning. source file for the macro name. For students writing a thesis, post-processing DP post-processors commonly use the ifthen can be an avenue to working with book-length man- package and a boolean switch to control layout suit- uscripts. Naturally, PPing at DP has distinctive able for printing or for an ebook reader. Again, the requirements from “ordinary” mathematical author- behavior is trivially toggled by one line in ship, but many skills are transferable. the source file. The scope of this technique is limited, The contribution of just one proofed or format- however. Unless a book contains few or no inset ted page per day from a dozen new volunteers would diagrams, the respective print and screen layouts substantially increase DP’s current LATEX through- must in practice have the same text block size. put. Thoughtful suggestions for new content will help ensure that important mathematical works will 5 The future be available electronically for posterity. This is potentially an exciting era for LATEX at DP; training guidelines have been written and a stable work flow has emerged after an early period that References relied on the skills of specific individuals. Whether [1] The catalog of LATEX projects produced at DP, or not DP contributes substantially to the preserva- http://www.pgdp.net/wiki/List_of_LaTeX_ tion of mathematical literature in the coming years projects/Posted. depends on its ability to build a self-sustaining com- [2] The DP wiki, http://www.pgdp.net/wiki/ munity of dedicated volunteers. Main_Page. Future projects should be chosen according to [3] The DP wiki LAT X links, http://www.pgdp. criteria ranging from scholarly or pedagogical value E net/wiki/LaTeX_Links. to expected popularity. Content providers must can- didly evaluate a book’s “value” and typographical [4] The Project Gutenberg copyright clearance needs, and appraise whether or not the book justifies page, http://www.gutenberg.org/wiki/ the necessary labor to produce in LATEX. Gutenberg:Copyright_How-To. LATEX-capable formatters are needed simply to [5] LATEX documentation for DP, http://mathcs. distribute large amounts of work among many vol- holycross.edu/~ahwang/pgdp/dptest/index. unteers. What takes one formatter a month can be .

Andrew Hwang