+* [Unsafe operations](http://docs.racket-lang.org/reference/unsafe.html)
* Racket [FFI](http://docs.racket-lang.org/foreign/index.html) |
[C API](http://docs.racket-lang.org/inside/index.html)
-* [Unsafe operations](http://docs.racket-lang.org/reference/unsafe.html)
-* [Initialization etc](http://docs.racket-lang.org/reference/running-sa.html)
+* [Initialization etc](http://docs.racket-lang.org/reference/running-sa.html#%28part._init-actions%29)
-## Teaching Languages ##
+## Custom Languages ##
-* [DrRacket/How to Design Programs Teaching Languages](http://docs.racket-lang.org/drracket/htdp-langs.html)
-* [HtDP Languages](http://docs.racket-lang.org/htdp-langs/index.html)
-* [HtDP Teachpacks](http://docs.racket-lang.org/teachpack/index.html)
-* [Implementing HtDP & other customized teaching languages](http://docs.racket-lang.org/htdp/index.html)
+* DrRacket/[HtDP Teaching Languages](http://docs.racket-lang.org/drracket/htdp-langs.html) |
+[manuals](http://docs.racket-lang.org/htdp-langs/index.html) |
+extending with "[teachpack](http://docs.racket-lang.org/teachpack/index.html)" libraries written in full language
+* Authoring HtDP teachpacks:
+[intro](http://docs.racket-lang.org/drracket/extending-drracket.html#%28part._teachpacks%29) |
+[details](http://docs.racket-lang.org/htdp/index.html)
+* [Adding Languages to DrRacket](http://docs.racket-lang.org/tools/adding-languages.html)
-## Custom Languages ##
-Racket users can define their own languages, as discussed in [Creating Languages](http://docs.racket-lang.org/guide/languages.html). Typically, a language name maps to its implementation through a module path by adding `/lang/reader`; for example, the language name `scribble/base` is expanded to `scribble/base/lang/reader`, which is the module that implements the surface-syntax parser.
+Racket users can define their own languages, as discussed in:
-* [Syntax: Meta-Programming Helpers](http://docs.racket-lang.org/syntax/index.html)
-* [(require syntax/module-reader)](http://docs.racket-lang.org/syntax/reader-helpers.html#%28mod-path._syntax%2Fmodule-reader%29)
+* [Creating Languages](http://docs.racket-lang.org/guide/languages.html), including
+[#lang s-exp](http://docs.racket-lang.org/guide/module-languages.html#%28part._s-exp%29)
+([more](http://docs.racket-lang.org/reference/reader.html#%28mod-path._s-exp%29))
+
+Typically, a language name maps to its implementation through a module path by adding `/lang/reader`; for example, the language name `scribble/base` is expanded to `scribble/base/lang/reader`, which is the module that implements the surface-syntax parser.
+
+* [Lists and Racket Syntax](http://docs.racket-lang.org/guide/Pairs__Lists__and_Racket_Syntax.html#%28part._lists-and-syntax%29)
+* [Module Syntax](http://docs.racket-lang.org/guide/Module_Syntax.html), including
+the [#lang](http://docs.racket-lang.org/guide/Module_Syntax.html#%28part._hash-lang%29) shorthand
+* [The Reader](http://docs.racket-lang.org/reference/reader.html), including
+[#reader](http://docs.racket-lang.org/reference/reader.html#%28part._parse-reader%29),
+[#lang reader](http://docs.racket-lang.org/reference/reader.html#%28mod-path._reader%29)
+* [Core Syntax](http://docs.racket-lang.org/reference/syntax.html)
* [#lang racket/kernel](http://docs.racket-lang.org/reference/Kernel_Forms_and_Functions.html)
-* [Extending DrRacket/Teachpacks](http://docs.racket-lang.org/drracket/extending-drracket.html#%28part._teachpacks%29)
-* [Adding Languages to DrRacket](http://docs.racket-lang.org/tools/adding-languages.html)
-* [#lang](http://docs.racket-lang.org/drracket/module.html) [more](http://docs.racket-lang.org/guide/Module_Syntax.html#%28part._hash-lang%29)
-* [Output Printing Styles](http://docs.racket-lang.org/drracket/output-syntax.html)
+<!-- -->
+* [Syntax: Meta-Programming Helpers](http://docs.racket-lang.org/syntax/index.html), including
+syntax/[module-reader](http://docs.racket-lang.org/syntax/reader-helpers.html#%28mod-path._syntax%2Fmodule-reader%29)
+
+* [The Printer](http://docs.racket-lang.org/reference/printing.html) |
+[output styles](http://docs.racket-lang.org/drracket/output-syntax.html)