]> git.kaiwu.me - klib.git/commitdiff
wrong markdown syntax...
authorHeng Li <lh3@me.com>
Mon, 28 Jan 2013 00:47:23 +0000 (19:47 -0500)
committerHeng Li <lh3@me.com>
Mon, 28 Jan 2013 00:47:23 +0000 (19:47 -0500)
README.md

index 6d78db77110422c72643154e0c279a127015f990..59fb7cd7970356cb0ba1208fb2976263a48407b1 100644 (file)
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
 ##<a name="overview"></a>Overview
 
 Klib is a standalone and lightweight C library distributed under [MIT/X11
-license](1). Most components are independent of external libraries, except the
+license][1]. Most components are independent of external libraries, except the
 standard C library, and independent of each other. To use a component of this
 library, you only need to copy a couple of files to your souce code tree
 without worrying about library dependencies.
@@ -15,35 +15,35 @@ speed and memory use.
 
 ####Common components
 
-* khash.h: generic hash table based on [double hashing](2).
-* kbtree.h: generic search tree based on [B-tree](3).
-* ksort.h: generic sort, including [introsort](4), [merge sort](5), [heap sort](6), [comb sort](7), [Knuth shuffle](8) and the [k-small](9) algorithm.
-* kseq.h: generic stream buffer and a [FASTA](10)/[FASTQ](11) format parser.
+* khash.h: generic hash table based on [double hashing][2].
+* kbtree.h: generic search tree based on [B-tree][3].
+* ksort.h: generic sort, including [introsort][4], [merge sort][5], [heap sort][6], [comb sort][7], [Knuth shuffle][8] and the [k-small][9] algorithm.
+* kseq.h: generic stream buffer and a [FASTA][10]/[FASTQ][11] format parser.
 * kvec.h: generic dynamic array.
-* klist.h: generic single-linked list and [memory pool](12).
+* klist.h: generic single-linked list and [memory pool][12].
 * kstring.{h,c}: basic string library.
-* kmath.{h,c}: numerical routines including [MT19937-64](13) [pseudorandom generator](14), basic [nonlinear programming](15) and a few special math functions.
+* kmath.{h,c}: numerical routines including [MT19937-64][13] [pseudorandom generator][14], basic [nonlinear programming][15] and a few special math functions.
 
 ####Components for more specific use cases
 
-* ksa.c: constructing [suffix arrays](16) for strings with multiple sentinels, based on a revised [SAIS algorithm](17).
+* ksa.c: constructing [suffix arrays][16] for strings with multiple sentinels, based on a revised [SAIS algorithm][17].
 * knetfile.{h,c}: random access to remote files on HTTP or FTP.
 * kopen.c: smart stream opening.
-* khmm.{h,c}: basic [HMM](18) library.
-* ksw.(h,c}: Striped [Smith-Waterman algorithm](19).
-* knhx.{h,c}: [Newick tree format](20) parser.
+* khmm.{h,c}: basic [HMM][18] library.
+* ksw.(h,c}: Striped [Smith-Waterman algorithm][19].
+* knhx.{h,c}: [Newick tree format][20] parser.
 
 
 ##<a name="philosophy"></a>Philosophy
 
-For the implementation of generic [containers](21), klib extensively uses C
+For the implementation of generic [containers][21], klib extensively uses C
 marcos. To use these data structures, you usually need to instantiate methods
 by expanding a long macro. This makes the source code look unusual or even ugly
 and adds difficulty to debugging. However, for efficient generic programming
-in C where we do not have effective [template](22) syntax in C++, using marcos
+in C where we do not have effective [template][22] syntax in C++, using marcos
 is the only solution. Only with marcos, you can write a generic container
 which, once instantiated, is able to achieve the same efficiency as a
-type-specific container. Some generic libraries in C, such as [Glib](23),
+type-specific container. Some generic libraries in C, such as [Glib][23],
 use the `void*` type to implement containers. These implementations
 are usually slower and use more memory than klib.
 
@@ -51,19 +51,19 @@ are usually slower and use more memory than klib.
 ##<a name="resources"></a>Resources
 
 * Library documentations, if present, are available in the header files. Examples
-can be found in the [test/](24) directory.
+can be found in the [test/][24] directory.
 * An **obsolete** documentation of the hash table library can be found at
-[SourceForget](25).
-* [Blog post](26) describing the hash table library.
-* [Blog post](27) on why using `void*` for generic programming may be inefficient.
-* [Blog post](28) on the generic stream buffer.
-* [Blog post](29) evaluating the performance of `kvec.h`.
-* [Blog post](30) arguing B-tree may be a better data structure than a binary search tree.
-* [Blog post](31) evaluating the performance of `khash.h` and `kbtree.h` among many other implementations.
-[An older version](33) of the benchmark is also available.
-* [Blog post](34) benchmarking internal sorting algorithms and implementations.
-* [Blog post](32) on the k-small algorithm.
-* [Blog post](35) on the Hooke-Jeeve's algorithm for nonlinear programming.
+[SourceForget][25].
+* [Blog post][26] describing the hash table library.
+* [Blog post][27] on why using `void*` for generic programming may be inefficient.
+* [Blog post][28] on the generic stream buffer.
+* [Blog post][29] evaluating the performance of `kvec.h`.
+* [Blog post][30] arguing B-tree may be a better data structure than a binary search tree.
+* [Blog post][31] evaluating the performance of `khash.h` and `kbtree.h` among many other implementations.
+[An older version][33] of the benchmark is also available.
+* [Blog post][34] benchmarking internal sorting algorithms and implementations.
+* [Blog post][32] on the k-small algorithm.
+* [Blog post][35] on the Hooke-Jeeve's algorithm for nonlinear programming.
 
 [1]: http://en.wikipedia.org/wiki/MIT_License
 [2]: http://en.wikipedia.org/wiki/Double_hashing