You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3 lines
50 KiB
HTML
3 lines
50 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>Pollen: the book is a program</title><link rel="stylesheet" type="text/css" href="scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="racket.css" title="default"/><link rel="stylesheet" type="text/css" href="manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="manual-racket.css" title="default"/><script type="text/javascript" src="scribble-common.js"></script><script type="text/javascript" src="manual-racket.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="scribble-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_0");">▼</a></td><td></td><td><a href="index.html" class="tocviewselflink" data-pltdoc="x">Pollen:<span class="mywbr"> </span> the book is a program</a></td></tr></table></div><div class="tocviewsublistonly" style="display: block;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1 </td><td><a href="Installation.html" class="tocviewlink" data-pltdoc="x">Installation</a></td></tr><tr><td align="right">2 </td><td><a href="quick-tour.html" class="tocviewlink" data-pltdoc="x">Quick tour</a></td></tr><tr><td align="right">3 </td><td><a href="Backstory.html" class="tocviewlink" data-pltdoc="x">Backstory</a></td></tr><tr><td align="right">4 </td><td><a href="big-picture.html" class="tocviewlink" data-pltdoc="x">The big picture</a></td></tr><tr><td align="right">5 </td><td><a href="first-tutorial.html" class="tocviewlink" data-pltdoc="x">First tutorial</a></td></tr><tr><td align="right">6 </td><td><a href="second-tutorial.html" class="tocviewlink" data-pltdoc="x">Second tutorial</a></td></tr><tr><td align="right">7 </td><td><a href="third-tutorial.html" class="tocviewlink" data-pltdoc="x">Third tutorial</a></td></tr><tr><td align="right">8 </td><td><a href="raco-pollen.html" class="tocviewlink" data-pltdoc="x">Using <span class="stt">raco pollen</span></a></td></tr><tr><td align="right">9 </td><td><a href="File_formats.html" class="tocviewlink" data-pltdoc="x">File formats</a></td></tr><tr><td align="right">10 </td><td><a href="reader.html" class="tocviewlink" data-pltdoc="x">◊ command overview</a></td></tr><tr><td align="right">11 </td><td><a href="Module_reference.html" class="tocviewlink" data-pltdoc="x">Module reference</a></td></tr><tr><td align="right">12 </td><td><a href="Acknowledgments.html" class="tocviewlink" data-pltdoc="x">Acknowledgments</a></td></tr><tr><td align="right">13 </td><td><a href="License___source_code.html" class="tocviewlink" data-pltdoc="x">License & source code</a></td></tr><tr><td align="right"></td><td><a href="doc-index.html" class="tocviewlink" data-pltdoc="x">Index</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber"></span><a href="#%28part._.Pollen__the_book_is_a_program%29" class="tocsubseclink" data-pltdoc="x">Pollen:<span class="mywbr"> </span> the book is a program</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="version">6.1.0.5</span></div><div class="navsettop"><span class="navleft"><div class="nosearchform"></div> </span><span class="navright"> <span class="nonavigation">← prev</span> <span class="nonavigation">up</span> <a href="Installation.html" title="forward to "1 Installation"" data-pltdoc="x">next →</a></span> </div><h2><a name="(part._.Pollen__the_book_is_a_program)"></a><a name="(mod-path._pollen)"></a>Pollen: the book is a program</h2><div class="SAuthorListBox"><span class="SAuthorList"><p class="author">Matthew Butterick <<a href="mailto:mb@mbtype.com">mb@mbtype.com</a>></p></span></div><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><a href="http://docs.racket-lang.org/guide/Module_Syntax.html#%28part._hash-lang%29" class="RktModLink" data-pltdoc="x"><span class="RktMod">#lang</span></a><span class="hspace"> </span><a href="index.html" class="RktModLink" data-pltdoc="x"><span class="RktSym">pollen</span></a></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">pollen</span></span></td></tr></table></p><p>Pollen is a publishing system that helps authors create beautiful and functional web-based books. Pollen includes tools for writing, designing, programming, testing, and publishing.</p><p>I used Pollen to create my book <a href="http://practicaltypography.com">Butterick’s Practical Typography</a>. Sure, go take a look. Is it better than the last digital book you encountered? Yes it is. Would you like your book to look like that? If so, keep reading.</p><p><div class="SIntrapara">At the core of Pollen is an argument:
|
|
</div><div class="SIntrapara"><ul><li><p>First, that digital books should be the best books we’ve ever had. So far, they’re not even close.</p></li><li><p>Second, that because digital books are software, an author shouldn’t think of a book as merely data. <span style="font-weight: bold">The book is a program.</span></p></li><li><p>Third, that the way we make digital books better than their predecessors is by exploiting this programmability.</p></li></ul></div></p><p>That’s what Pollen is for.</p><p>Not that you need to be a programmer to use Pollen. On the contrary, the Pollen language is markup-based, so you can write & edit text naturally. But when you want to automate repetitive tasks, add cross-references, or pull in data from other sources, you can access a full programming language from within the text.</p><p>That language is Racket. I chose Racket because while the idea for Pollen had been with me for several years, it simply wasn’t possible to build it with other languages. So if it’s unfamiliar to you, don’t panic. It was unfamiliar to me. Once you see what you can do with Pollen & Racket, you may be persuaded. I was.</p><p>Or, if you can find a better digital-publishing tool, use that. But I’m never going back to the way I used to work.</p><table cellspacing="0" cellpadding="0"><tr><td><p><span class="hspace"> </span><a href="Installation.html" class="toptoclink" data-pltdoc="x">1<span class="hspace"> </span>Installation</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html" class="toptoclink" data-pltdoc="x">2<span class="hspace"> </span>Quick tour</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Creating_a_source_file%29" class="toclink" data-pltdoc="x">2.1<span class="hspace"> </span>Creating a source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Running_a_source_file%29" class="toclink" data-pltdoc="x">2.2<span class="hspace"> </span>Running a source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Naming__saving__and_rendering_a_source_file%29" class="toclink" data-pltdoc="x">2.3<span class="hspace"> </span>Naming, saving, and rendering a source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.The_project_server%29" class="toclink" data-pltdoc="x">2.4<span class="hspace"> </span>The project server</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Intermission%29" class="toclink" data-pltdoc="x">2.5<span class="hspace"> </span>Intermission</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Pollen_as_a_preprocessor%29" class="toclink" data-pltdoc="x">2.6<span class="hspace"> </span>Pollen as a preprocessor</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Markdown_mode%29" class="toclink" data-pltdoc="x">2.7<span class="hspace"> </span>Markdown mode</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Markup_mode%29" class="toclink" data-pltdoc="x">2.8<span class="hspace"> </span>Markup mode</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.Templates%29" class="toclink" data-pltdoc="x">2.9<span class="hspace"> </span>Templates</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.P.S_for_.Scribble_users%29" class="toclink" data-pltdoc="x">2.10<span class="hspace"> </span>PS for Scribble users</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="quick-tour.html#%28part._.The_end_of_the_beginning%29" class="toclink" data-pltdoc="x">2.11<span class="hspace"> </span>The end of the beginning</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html" class="toptoclink" data-pltdoc="x">3<span class="hspace"> </span>Backstory</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part._.Web_development_and_its_discontents%29" class="toclink" data-pltdoc="x">3.1<span class="hspace"> </span>Web development and its discontents</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part._.The_better_idea__a_programming_model%29" class="toclink" data-pltdoc="x">3.2<span class="hspace"> </span>The better idea: a programming model</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part.__.Now_you_have_two_problems_%29" class="toclink" data-pltdoc="x">3.3<span class="hspace"> </span>“Now you have two problems”</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part._.Rethinking_the_solution_for_digital_books%29" class="toclink" data-pltdoc="x">3.4<span class="hspace"> </span>Rethinking the solution for digital books</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part._.Enter_.Racket%29" class="toclink" data-pltdoc="x">3.5<span class="hspace"> </span>Enter Racket</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part._.What_is_.Pollen_%29" class="toclink" data-pltdoc="x">3.6<span class="hspace"> </span>What is Pollen?</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Backstory.html#%28part._why-racket-why-lisp%29" class="toclink" data-pltdoc="x">3.7<span class="hspace"> </span>Further reading</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html" class="toptoclink" data-pltdoc="x">4<span class="hspace"> </span>The big picture</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._the-book-is-a-program%29" class="toclink" data-pltdoc="x">4.1<span class="hspace"> </span>The book is a program</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.One_language__multiple_dialects%29" class="toclink" data-pltdoc="x">4.2<span class="hspace"> </span>One language, multiple dialects</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.Development_environment%29" class="toclink" data-pltdoc="x">4.3<span class="hspace"> </span>Development environment</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.A_special_data_structure_for_.H.T.M.L%29" class="toclink" data-pltdoc="x">4.4<span class="hspace"> </span>A special data structure for HTML</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.Pollen_command_syntax%29" class="toclink" data-pltdoc="x">4.5<span class="hspace"> </span>Pollen command syntax</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.The_preprocessor%29" class="toclink" data-pltdoc="x">4.6<span class="hspace"> </span>The preprocessor</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.Templated_source_files%29" class="toclink" data-pltdoc="x">4.7<span class="hspace"> </span>Templated source files</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="big-picture.html#%28part._.Pagetrees%29" class="toclink" data-pltdoc="x">4.8<span class="hspace"> </span>Pagetrees</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html" class="toptoclink" data-pltdoc="x">5<span class="hspace"> </span>First tutorial</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._tutorial-1._.Prerequisites%29" class="toclink" data-pltdoc="x">5.1<span class="hspace"> </span>Prerequisites</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.The_relationship_of_.Racket___.Pollen%29" class="toclink" data-pltdoc="x">5.2<span class="hspace"> </span>The relationship of Racket & Pollen</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Starting_a_new_file_in_.Dr.Racket%29" class="toclink" data-pltdoc="x">5.3<span class="hspace"> </span>Starting a new file in DrRacket</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Setting_the__lang_line%29" class="toclink" data-pltdoc="x">5.3.1<span class="hspace"> </span>Setting the <span class="stt">#lang</span> line</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Putting_in_the_text_of_the_poem%29" class="toclink" data-pltdoc="x">5.3.2<span class="hspace"> </span>Putting in the text of the poem</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Saving___naming_your_source_file%29" class="toclink" data-pltdoc="x">5.3.3<span class="hspace"> </span>Saving & naming your source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Using_the_project_server%29" class="toclink" data-pltdoc="x">5.4<span class="hspace"> </span>Using the project server</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Starting_the_project_server_with_raco_pollen%29" class="toclink" data-pltdoc="x">5.4.1<span class="hspace"> </span>Starting the project server with <span class="stt">raco pollen</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Using_the_dashboard%29" class="toclink" data-pltdoc="x">5.4.2<span class="hspace"> </span>Using the dashboard</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Source_files_in_the_dashboard%29" class="toclink" data-pltdoc="x">5.4.3<span class="hspace"> </span>Source files in the dashboard</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Working_with_the_preprocessor%29" class="toclink" data-pltdoc="x">5.5<span class="hspace"> </span>Working with the preprocessor</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Setting_up_a_preprocessor_source_file%29" class="toclink" data-pltdoc="x">5.5.1<span class="hspace"> </span>Setting up a preprocessor source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Creating_valid_.H.T.M.L_output%29" class="toclink" data-pltdoc="x">5.5.2<span class="hspace"> </span>Creating valid HTML output</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Adding_commands%29" class="toclink" data-pltdoc="x">5.5.3<span class="hspace"> </span>Adding commands</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Racket_basics__if_you_re_not_familiar_%29" class="toclink" data-pltdoc="x">5.5.4<span class="hspace"> </span>Racket basics (if you’re not familiar)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Defining_variables_with_commands%29" class="toclink" data-pltdoc="x">5.5.5<span class="hspace"> </span>Defining variables with commands</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Inserting_values_from_variables%29" class="toclink" data-pltdoc="x">5.5.6<span class="hspace"> </span>Inserting values from variables</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.Inserting_variables_within_.C.S.S%29" class="toclink" data-pltdoc="x">5.5.7<span class="hspace"> </span>Inserting variables within CSS</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="first-tutorial.html#%28part._.First_tutorial_complete%29" class="toclink" data-pltdoc="x">5.6<span class="hspace"> </span>First tutorial complete</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html" class="toptoclink" data-pltdoc="x">6<span class="hspace"> </span>Second tutorial</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Prerequisites%29" class="toclink" data-pltdoc="x">6.1<span class="hspace"> </span>Prerequisites</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.Prelude__my_principled_objection_to_.Markdown%29" class="toclink" data-pltdoc="x">6.2<span class="hspace"> </span>Prelude: my principled objection to Markdown</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.Markdown_in_.Pollen__two_options%29" class="toclink" data-pltdoc="x">6.3<span class="hspace"> </span>Markdown in Pollen: two options</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.Using_.Markdown_with_the_preprocessor%29" class="toclink" data-pltdoc="x">6.3.1<span class="hspace"> </span>Using Markdown with the preprocessor</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.Authoring_mode%29" class="toclink" data-pltdoc="x">6.3.2<span class="hspace"> </span>Authoring mode</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.X-expressions%29" class="toclink" data-pltdoc="x">6.3.3<span class="hspace"> </span>X-expressions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.Markdown_authoring_mode%29" class="toclink" data-pltdoc="x">6.3.4<span class="hspace"> </span>Markdown authoring mode</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Templates%29" class="toclink" data-pltdoc="x">6.4<span class="hspace"> </span>Templates</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.The_-_html_function_and_the_doc_variable%29" class="toclink" data-pltdoc="x">6.4.1<span class="hspace"> </span>The <span class="stt">->html</span> function and the <span class="stt">doc</span> variable</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Making_a_custom_template%29" class="toclink" data-pltdoc="x">6.4.2<span class="hspace"> </span>Making a custom template</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Inserting_specific_source_data_into_templates%29" class="toclink" data-pltdoc="x">6.4.3<span class="hspace"> </span>Inserting specific source data into templates</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Linking_to_an_external_.C.S.S_file%29" class="toclink" data-pltdoc="x">6.4.4<span class="hspace"> </span>Linking to an external CSS file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Intermission%29" class="toclink" data-pltdoc="x">6.5<span class="hspace"> </span>Intermission</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Pagetrees%29" class="toclink" data-pltdoc="x">6.6<span class="hspace"> </span>Pagetrees</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Pagetree_navigation%29" class="toclink" data-pltdoc="x">6.6.1<span class="hspace"> </span>Pagetree navigation</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Using_the_automatic_pagetree%29" class="toclink" data-pltdoc="x">6.6.2<span class="hspace"> </span>Using the automatic pagetree</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Adding_navigation_links_to_the_template_with_here%29" class="toclink" data-pltdoc="x">6.6.3<span class="hspace"> </span>Adding navigation links to the template with <span class="stt">here</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Handling_navigation_boundaries_with_conditionals%29" class="toclink" data-pltdoc="x">6.6.4<span class="hspace"> </span>Handling navigation boundaries with conditionals</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._.Making_a_pagetree_source_file%29" class="toclink" data-pltdoc="x">6.6.5<span class="hspace"> </span>Making a pagetree source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._tutorial-2._index_ptree___the_project_server%29" class="toclink" data-pltdoc="x">6.6.6<span class="hspace"> </span><span class="stt">index.ptree</span> & the project server</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="second-tutorial.html#%28part._.Second_tutorial_complete%29" class="toclink" data-pltdoc="x">6.7<span class="hspace"> </span>Second tutorial complete</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html" class="toptoclink" data-pltdoc="x">7<span class="hspace"> </span>Third tutorial</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._tutorial-3._.Prerequisites%29" class="toclink" data-pltdoc="x">7.1<span class="hspace"> </span>Prerequisites</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Pollen_markup_vs__.X.M.L%29" class="toclink" data-pltdoc="x">7.2<span class="hspace"> </span>Pollen markup vs. XML</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.The_.X.M.L_problem%29" class="toclink" data-pltdoc="x">7.2.1<span class="hspace"> </span>The XML problem</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.What_.Pollen_markup_does_differently%29" class="toclink" data-pltdoc="x">7.2.2<span class="hspace"> </span>What Pollen markup does differently</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part.__.But_.I_really_need_.X.M.L__%29" class="toclink" data-pltdoc="x">7.2.3<span class="hspace"> </span>“But I really need XML…”</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Writing_with_.Pollen_markup%29" class="toclink" data-pltdoc="x">7.3<span class="hspace"> </span>Writing with Pollen markup</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Creating_a_.Pollen_markup_file%29" class="toclink" data-pltdoc="x">7.3.1<span class="hspace"> </span>Creating a Pollen markup file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Tags___tag_functions%29" class="toclink" data-pltdoc="x">7.3.2<span class="hspace"> </span>Tags & tag functions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Attributes%29" class="toclink" data-pltdoc="x">7.3.3<span class="hspace"> </span>Attributes</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.What_are_custom_tags_good_for_%29" class="toclink" data-pltdoc="x">7.3.4<span class="hspace"> </span>What are custom tags good for?</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Semantic_markup%29" class="toclink" data-pltdoc="x">7.3.5<span class="hspace"> </span>Semantic markup</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Format_independence%29" class="toclink" data-pltdoc="x">7.3.6<span class="hspace"> </span>Format independence</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Using_custom_tags%29" class="toclink" data-pltdoc="x">7.3.7<span class="hspace"> </span>Using custom tags</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Choosing_custom_tags%29" class="toclink" data-pltdoc="x">7.3.8<span class="hspace"> </span>Choosing custom tags</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Tags_are_functions%29" class="toclink" data-pltdoc="x">7.4<span class="hspace"> </span>Tags are functions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Attaching_behavior_to_tags%29" class="toclink" data-pltdoc="x">7.4.1<span class="hspace"> </span>Attaching behavior to tags</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Notes_for_experienced_programmers%29" class="toclink" data-pltdoc="x">7.4.2<span class="hspace"> </span>Notes for experienced programmers</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Point_of_no_return%29" class="toclink" data-pltdoc="x">7.4.2.1<span class="hspace"> </span>Point of no <span class="RktSym">return</span><span class="RktMeta"></span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Multiple_input_values___rest_arguments%29" class="toclink" data-pltdoc="x">7.4.2.2<span class="hspace"> </span>Multiple input values & rest arguments</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Returning_an_.X-expression%29" class="toclink" data-pltdoc="x">7.4.2.3<span class="hspace"> </span>Returning an X-expression</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Interpolating_variables_into_strings%29" class="toclink" data-pltdoc="x">7.4.2.4<span class="hspace"> </span>Interpolating variables into strings</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Parsing_attributes%29" class="toclink" data-pltdoc="x">7.4.2.5<span class="hspace"> </span>Parsing attributes</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._tutorial-3._.Intermission%29" class="toclink" data-pltdoc="x">7.5<span class="hspace"> </span>Intermission</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Organizing_functions%29" class="toclink" data-pltdoc="x">7.6<span class="hspace"> </span>Organizing functions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Using_.Racket_s_function_libraries%29" class="toclink" data-pltdoc="x">7.6.1<span class="hspace"> </span>Using Racket’s function libraries</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._tutorial-3._.Using_the_directory-require_rkt_file%29" class="toclink" data-pltdoc="x">7.6.2<span class="hspace"> </span>Using the <span class="stt">directory-require.rkt</span> file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Decoding_markup_via_the_root_tag%29" class="toclink" data-pltdoc="x">7.7<span class="hspace"> </span>Decoding markup via the <span class="stt">root</span> tag</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Putting_it_all_together%29" class="toclink" data-pltdoc="x">7.8<span class="hspace"> </span>Putting it all together</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._tutorial-3._.The_directory-require_rkt_file%29" class="toclink" data-pltdoc="x">7.8.1<span class="hspace"> </span>The <span class="stt">directory-require.rkt</span> file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.The_template%29" class="toclink" data-pltdoc="x">7.8.2<span class="hspace"> </span>The template</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.The_pagetree%29" class="toclink" data-pltdoc="x">7.8.3<span class="hspace"> </span>The pagetree</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.A_.C.S.S_stylesheet_using_the_preprocessor%29" class="toclink" data-pltdoc="x">7.8.4<span class="hspace"> </span>A CSS stylesheet using the preprocessor</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.The_content_source_files_using_.Pollen_markup%29" class="toclink" data-pltdoc="x">7.8.5<span class="hspace"> </span>The content source files using Pollen markup</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.The_result%29" class="toclink" data-pltdoc="x">7.8.6<span class="hspace"> </span>The result</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="third-tutorial.html#%28part._.Third_tutorial_complete%29" class="toclink" data-pltdoc="x">7.9<span class="hspace"> </span>Third tutorial complete</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html" class="toptoclink" data-pltdoc="x">8<span class="hspace"> </span>Using <span class="stt">raco pollen</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html#%28part._.Making_sure_raco_pollen_works%29" class="toclink" data-pltdoc="x">8.1<span class="hspace"> </span>Making sure <span class="RktSym">raco</span><span class="stt"> </span><span class="RktSym">pollen</span> works</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html#%28part._raco_pollen%29" class="toclink" data-pltdoc="x">8.2<span class="hspace"> </span><span class="RktSym">raco</span><span class="stt"> </span><span class="RktSym">pollen</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html#%28part._raco_pollen_help%29" class="toclink" data-pltdoc="x">8.3<span class="hspace"> </span><span class="RktSym">raco</span><span class="stt"> </span><span class="RktSym">pollen</span><span class="stt"> </span><span class="RktSym">help</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html#%28part._raco_pollen_start%29" class="toclink" data-pltdoc="x">8.4<span class="hspace"> </span><span class="RktSym">raco</span><span class="stt"> </span><span class="RktSym">pollen</span><span class="stt"> </span><span class="RktSym">start</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html#%28part._raco_pollen_render%29" class="toclink" data-pltdoc="x">8.5<span class="hspace"> </span><span class="RktSym">raco</span><span class="stt"> </span><span class="RktSym">pollen</span><span class="stt"> </span><span class="RktSym">render</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="raco-pollen.html#%28part._raco_pollen_clone%29" class="toclink" data-pltdoc="x">8.6<span class="hspace"> </span><span class="RktSym">raco</span><span class="stt"> </span><span class="RktSym">pollen</span><span class="stt"> </span><span class="RktSym">clone</span></a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html" class="toptoclink" data-pltdoc="x">9<span class="hspace"> </span>File formats</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Source_formats%29" class="toclink" data-pltdoc="x">9.1<span class="hspace"> </span>Source formats</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Command_syntax_using__%29" class="toclink" data-pltdoc="x">9.1.1<span class="hspace"> </span>Command syntax using ◊</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Any_command_is_valid%29" class="toclink" data-pltdoc="x">9.1.2<span class="hspace"> </span>Any command is valid</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Standard_exports%29" class="toclink" data-pltdoc="x">9.1.3<span class="hspace"> </span>Standard exports</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Custom_exports%29" class="toclink" data-pltdoc="x">9.1.4<span class="hspace"> </span>Custom exports</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.The_directory-require_rkt_file%29" class="toclink" data-pltdoc="x">9.1.5<span class="hspace"> </span>The <span class="RktSym">directory-require.rkt</span><span class="RktMeta"></span> file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Preprocessor___pp_extension_%29" class="toclink" data-pltdoc="x">9.1.6<span class="hspace"> </span>Preprocessor (.pp extension)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Markdown___pmd_extension_%29" class="toclink" data-pltdoc="x">9.1.7<span class="hspace"> </span>Markdown (.pmd extension)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Markup___pm_extension_%29" class="toclink" data-pltdoc="x">9.1.8<span class="hspace"> </span>Markup (.pm extension)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Pagetree____ptree_extension_%29" class="toclink" data-pltdoc="x">9.1.9<span class="hspace"> </span>Pagetree (.ptree extension)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Utility_formats%29" class="toclink" data-pltdoc="x">9.2<span class="hspace"> </span>Utility formats</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Scribble____scrbl_extension_%29" class="toclink" data-pltdoc="x">9.2.1<span class="hspace"> </span>Scribble (.scrbl extension)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File_formats.html#%28part._.Null___p_extension_%29" class="toclink" data-pltdoc="x">9.2.2<span class="hspace"> </span>Null (.p extension)</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html" class="toptoclink" data-pltdoc="x">10<span class="hspace"> </span>◊ command overview</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.The_golden_rule%29" class="toclink" data-pltdoc="x">10.1<span class="hspace"> </span>The golden rule</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.The_lozenge_glyph____%29" class="toclink" data-pltdoc="x">10.2<span class="hspace"> </span>The lozenge glyph (◊)</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.The_two_command_modes__text_mode___.Racket_mode%29" class="toclink" data-pltdoc="x">10.3<span class="hspace"> </span>The two command modes: text mode & Racket mode</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.The_command_name%29" class="toclink" data-pltdoc="x">10.3.1<span class="hspace"> </span>The command name</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.Invoking_tag_functions%29" class="toclink" data-pltdoc="x">10.3.1.1<span class="hspace"> </span>Invoking tag functions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.Invoking_other_functions%29" class="toclink" data-pltdoc="x">10.3.1.2<span class="hspace"> </span>Invoking other functions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.Inserting_the_value_of_a_variable%29" class="toclink" data-pltdoc="x">10.3.1.3<span class="hspace"> </span>Inserting the value of a variable</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.Inserting_metas%29" class="toclink" data-pltdoc="x">10.3.1.4<span class="hspace"> </span>Inserting metas</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.Inserting_a_comment%29" class="toclink" data-pltdoc="x">10.3.1.5<span class="hspace"> </span>Inserting a comment</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.The_.Racket_arguments%29" class="toclink" data-pltdoc="x">10.3.2<span class="hspace"> </span>The Racket arguments</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.The_text_argument%29" class="toclink" data-pltdoc="x">10.3.3<span class="hspace"> </span>The text argument</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="reader.html#%28part._.Further_reading%29" class="toclink" data-pltdoc="x">10.4<span class="hspace"> </span>Further reading</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Module_reference.html" class="toptoclink" data-pltdoc="x">11<span class="hspace"> </span>Module reference</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Cache.html" class="toclink" data-pltdoc="x">11.1<span class="hspace"> </span>Cache</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Decode.html" class="toclink" data-pltdoc="x">11.2<span class="hspace"> </span>Decode</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Decode.html#%28part._.Block%29" class="toclink" data-pltdoc="x">11.2.1<span class="hspace"> </span>Block</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Decode.html#%28part._.Typography%29" class="toclink" data-pltdoc="x">11.2.2<span class="hspace"> </span>Typography</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="file-types.html" class="toclink" data-pltdoc="x">11.3<span class="hspace"> </span>File</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html" class="toclink" data-pltdoc="x">11.4<span class="hspace"> </span>Pagetree</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Making_pagetrees_with_a_source_file%29" class="toclink" data-pltdoc="x">11.4.1<span class="hspace"> </span>Making pagetrees with a source file</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Making_pagetrees_by_hand%29" class="toclink" data-pltdoc="x">11.4.2<span class="hspace"> </span>Making pagetrees by hand</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Using_pagetrees_for_navigation%29" class="toclink" data-pltdoc="x">11.4.3<span class="hspace"> </span>Using pagetrees for navigation</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Using_index_ptree_in_the_dashboard%29" class="toclink" data-pltdoc="x">11.4.4<span class="hspace"> </span>Using <span class="stt">index.ptree</span> in the dashboard</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Using_pagetrees_with_raco_pollen_render%29" class="toclink" data-pltdoc="x">11.4.5<span class="hspace"> </span>Using pagetrees with <span class="stt">raco pollen render</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Functions%29" class="toclink" data-pltdoc="x">11.4.6<span class="hspace"> </span>Functions</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Predicates___validation%29" class="toclink" data-pltdoc="x">11.4.6.1<span class="hspace"> </span>Predicates & validation</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Navigation%29" class="toclink" data-pltdoc="x">11.4.6.2<span class="hspace"> </span>Navigation</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Utilities%29" class="toclink" data-pltdoc="x">11.4.6.3<span class="hspace"> </span>Utilities</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Render.html" class="toclink" data-pltdoc="x">11.5<span class="hspace"> </span>Render</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Template.html" class="toclink" data-pltdoc="x">11.6<span class="hspace"> </span>Template</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Tag.html" class="toclink" data-pltdoc="x">11.7<span class="hspace"> </span>Tag</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Top.html" class="toclink" data-pltdoc="x">11.8<span class="hspace"> </span>Top</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="World.html" class="toclink" data-pltdoc="x">11.9<span class="hspace"> </span>World</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Acknowledgments.html" class="toptoclink" data-pltdoc="x">12<span class="hspace"> </span>Acknowledgments</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="License___source_code.html" class="toptoclink" data-pltdoc="x">13<span class="hspace"> </span>License & source code</a></p></td></tr><tr><td><p><span class="hspace"></span></p></td></tr><tr><td><p><span class="hspace"> </span><a href="doc-index.html" class="toptoclink" data-pltdoc="x">Index</a></p></td></tr></table><div class="navsetbottom"><span class="navleft"><div class="nosearchform"></div> </span><span class="navright"> <span class="nonavigation">← prev</span> <span class="nonavigation">up</span> <a href="Installation.html" title="forward to "1 Installation"" data-pltdoc="x">next →</a></span> </div></div></div><div id="contextindicator"> </div></body></html> |