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
26 KiB
HTML
3 lines
26 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><!--[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="System_overview.html" class="tocviewlink" data-pltdoc="x">System overview</a></td></tr><tr><td align="right">5 </td><td><a href="Using_raco_pollen.html" class="tocviewlink" data-pltdoc="x">Using <span class="stt">raco pollen</span></a></td></tr><tr><td align="right">6 </td><td><a href="File_formats.html" class="tocviewlink" data-pltdoc="x">File formats</a></td></tr><tr><td align="right">7 </td><td><a href="reader.html" class="tocviewlink" data-pltdoc="x">◊ command overview</a></td></tr><tr><td align="right">8 </td><td><a href="Module_reference.html" class="tocviewlink" data-pltdoc="x">Module reference</a></td></tr><tr><td align="right">9 </td><td><a href="Acknowledgments.html" class="tocviewlink" data-pltdoc="x">Acknowledgments</a></td></tr><tr><td align="right">10 </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.0.1.6</span></div><div class="navsettop"><span class="navleft"> </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" 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"><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></p></td></tr><tr><td><p><span class="hspace"> </span><a href="System_overview.html" class="toptoclink" data-pltdoc="x">4<span class="hspace"> </span>System overview</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="System_overview.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="System_overview.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="System_overview.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="System_overview.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="System_overview.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="System_overview.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="System_overview.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="System_overview.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="Using_raco_pollen.html" class="toptoclink" data-pltdoc="x">5<span class="hspace"> </span>Using <span class="stt">raco pollen</span></a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Using_raco_pollen.html#%28part._.Making_sure_raco_pollen_works%29" class="toclink" data-pltdoc="x">5.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="Using_raco_pollen.html#%28part._raco_pollen%29" class="toclink" data-pltdoc="x">5.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="Using_raco_pollen.html#%28part._raco_pollen_help%29" class="toclink" data-pltdoc="x">5.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="Using_raco_pollen.html#%28part._raco_pollen_start%29" class="toclink" data-pltdoc="x">5.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="Using_raco_pollen.html#%28part._raco_pollen_render%29" class="toclink" data-pltdoc="x">5.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="Using_raco_pollen.html#%28part._raco_pollen_clone%29" class="toclink" data-pltdoc="x">5.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">6<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">6.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">6.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">6.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">6.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">6.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_project-require_rkt_file%29" class="toclink" data-pltdoc="x">6.1.5<span class="hspace"> </span>The <span class="RktSym">project-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">6.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">6.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">6.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">6.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">6.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">6.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">6.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">7<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">7.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">7.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">7.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">7.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">7.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">7.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">7.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_a_comment%29" class="toclink" data-pltdoc="x">7.3.1.4<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">7.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">7.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">7.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">8<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">8.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">8.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">8.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">8.2.2<span class="hspace"> </span>Typography</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="File.html" class="toclink" data-pltdoc="x">8.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">8.4<span class="hspace"> </span>Pagetree</a></p></td></tr><tr><td><p><span class="hspace"> </span><a href="Pagetree.html#%28part._.Navigation%29" class="toclink" data-pltdoc="x">8.4.1<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">8.4.2<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">8.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">8.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">8.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">8.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">8.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">9<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">10<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"> </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> |