[#]: subject: "Writing project documentation in HTML" [#]: via: "https://opensource.com/article/22/8/writing-project-documentation-html" [#]: author: "Jim Hall https://opensource.com/users/jim-hall" [#]: collector: "lkxed" [#]: translator: " " [#]: reviewer: " " [#]: publisher: " " [#]: url: " " Writing project documentation in HTML ====== HyperText has more features than plain text to level up your documentation. ![5 trends in open source documentation][1] Image by: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0 Documentation is an important part of any technical project. Good documentation tells the end user how to run the program, how to use it, or how to compile it. For many projects, plain text documentation is the standard. After all, every system can display plain text files. However, plain text is limiting. Plain text files lack formatting elements like italics text, bold text, and titles. To add these elements, we can leverage HTML. HyperText Markup Language (HTML) is the markup language used in all web browsers. And with a little extra effort, you can use HTML to write project documentation that can be read by everyone. HTML uses a series of tags enclosed in angle brackets to control how different parts of a document should be displayed. These tags define *elements* in an HTML document, such as document headings, paragraphs, italics text, bold text, and other kinds of text. Almost every tag comes in a pair: an *opening* tag, like

to start a paragraph, and a *closing* tag to end the element, such as

to end a paragraph. When using these tags, remember this rule: *if you open a tag, you need to close it*. Not closing a tag properly can result in the web browser incorrectly. Some tags define a *block* within the HTML document, while others are *inline*. For more information about block and inline elements, read my other article about [a gentle introduction to HTML][2]. ### Start an empty document Begin by creating a boilerplate empty HTML document. Every HTML document should provide a document type declaration. Use the single tag on the first line of the HTML file to define an HTML document. The HTML standard also requires that pages wrap the document text in two block elements: to define the HTML document, and to define the body text. While HTML doesn't require *indenting* each new code block, but I add it anyway so you can see that is actually "inside" the block: ```       ``` HTML documents also need a block before the that provides extra information called *metadata* about the page. The only required metadata is the title of the document, defined by the element. An empty document might look like this: ``` <!DOCTYPE html> <html>   <head>     <title>Title of the document         ``` ### Add the text Let's exercise some HTML knowledge by adapting an existing plain text "Readme" file to HTML. For this example, I'm using part of the documentation about how to play an open source board game, called Simple Senet: ``` HOW TO PLAY SIMPLE SENET The game will automatically "throw" the throwing sticks for you, and display the results in the lower-right corner of the screen. If the "throw" is zero, then you lose your turn. When it's your turn, the game will automatically select your first piece on the board. You may or may not be able to make a move with this piece, so select your piece to move, and hit Space (or Enter) to move it. You can select using several different methods: -  Up/down/left/right to navigate to a specific square. -  Plus (+) or minus (-) to navigate "left" and "right" on the    board. Note that this will automatically follow the "backwards S"    shape of the board. -  Tab to select your next piece on the board. To quit the game at any time, press Q (uppercase Q) or hit Esc, and the game will prompt if you want to forfeit the game. You win if you move all of your pieces off the board before your opponent. It takes a combination of luck and strategy! ``` Start by adding this Readme text into your empty HTML file. The main content of an HTML page is the , so that's where you put the text: ```       Title of the document         HOW TO PLAY SIMPLE SENET         The game will automatically "throw" the throwing sticks for you, and     display the results in the lower-right corner of the screen.         If the "throw" is zero, then you lose your turn.         When it's your turn, the game will automatically select your first     piece on the board. You may or may not be able to make a move with     this piece, so select your piece to move, and hit Space (or Enter) to     move it. You can select using several different methods:         - Up/down/left/right to navigate to a specific square.         - Plus (+) or minus (-) to navigate "left" and "right" on the       board. Note that this will automatically follow the "backwards S"       shape of the board.         - Tab to select your next piece on the board.         To quit the game at any time, press Q (uppercase Q) or hit Esc, and     the game will prompt if you want to forfeit the game.         You win if you move all of your pieces off the board before your     opponent. It takes a combination of luck and strategy!   ``` Without further changes, this HTML document looks completely wrong when you view it in a web browser. That's because HTML, like most markup systems, collects *words* from the input file and fills *paragraphs* in the output. Because you have not yet added other markup, a web browser displays the text in a single paragraph: ![This is how a web browser displays our bare HTML file.][3] ### Body paragraphs Your first step in updating this Readme file to HTML is to mark every paragraph so the web browser can display it properly. The tag to define a paragraph is

. While not everything in this file is actually a paragraph, start by wrapping everything in

and

tags: ```       Title of the document        

HOW TO PLAY SIMPLE SENET

       

The game will automatically "throw" the throwing sticks for you, and     display the results in the lower-right corner of the screen.

       

If the "throw" is zero, then you lose your turn.

       

When it's your turn, the game will automatically select your first     piece on the board. You may or may not be able to make a move with     this piece, so select your piece to move, and hit Space (or Enter) to     move it. You can select using several different methods:

       

- Up/down/left/right to navigate to a specific square.

       

- Plus (+) or minus (-) to navigate "left" and "right" on the          board. Note that this will automatically follow the "backwards S"          shape of the board.

       

- Tab to select your next piece on the board.

       

To quit the game at any time, press Q (uppercase Q) or hit Esc, and     the game will prompt if you want to forfeit the game.

       

You win if you move all of your pieces off the board before your     opponent. It takes a combination of luck and strategy!

  ``` This makes the Readme look more like a document you want to read. When you view the new document in a web browser, every paragraph starts on a new line, with some extra space above and below. The paragraph is the most common example of a block element. ![Our first step is to define everything as paragraphs.][4] ### Headings and subheadings The first line in your content is your document's title, so you should make this into a heading. HTML provides six levels of headings, from

to

. In most documents, you might use

to define the title of the document, and

for major subsections. Make this change in your sample Readme document. Use the name of the program ("Simple Senet") as the main section title, and "How to Play" as a subsection in the document. Note that in this example, I've also updated the in the document metadata to use the same title as the <h1> heading. This doesn't actually change how browsers display the document, but it is a good practice to use: ``` <!DOCTYPE html> <html>   <head>     <title>Simple Senet        

Simple Senet

   

How to Play

    ...   ``` By adding these section headings, you've made the document easier to read: ![By itself, HTML will display headings and subheadings in a different style than the paragraphs.][5] ### Ordered and unordered lists Your document includes a list of different ways to navigate the board game. Because this document started out as a plain text file, each item in the list starts with a hyphen. But you can use HTML to define these three paragraphs as list items. HTML supports two kinds of lists: *ordered* and *unordered* lists. An ordered list
    is a numbered series, which you might use to define a sequence of steps. An unordered list