Read "Dynamo, Amazon’s Highly Available Key-value Store" Read "Bigtable, A Distributed Storage System for Structured Data" Read "Streaming Systems" 3, Watermarks Read "Streaming Systems" 1&2, Streaming 101 Read "F1, a distributed SQL database that scales" Read "Zanzibar, Google’s Consistent, Global Authorization System" Read "Spanner, Google's Globally-Distributed Database" Read "Designing Data-intensive applications" 12, The Future of Data Systems IOS development with Swift Read "Designing Data-intensive applications" 10&11, Batch and Stream Processing Read "Designing Data-intensive applications" 9, Consistency and Consensus Read "Designing Data-intensive applications" 8, Distributed System Troubles Read "Designing Data-intensive applications" 7, Transactions Read "Designing Data-intensive applications" 6, Partitioning Read "Designing Data-intensive applications" 5, Replication Read "Designing Data-intensive applications" 3&4, Storage, Retrieval, Encoding Read "Designing Data-intensive applications" 1&2, Foundation of Data Systems Three cases of binary search TAMU Operating System 2 Memory Management TAMU Operating System 1 Introduction Overview in cloud computing 2 TAMU Operating System 7 Virtualization TAMU Operating System 6 File System TAMU Operating System 5 I/O and Disk Management TAMU Operating System 4 Synchronization TAMU Operating System 3 Concurrency and Threading TAMU Computer Networks 5 Data Link Layer TAMU Computer Networks 4 Network Layer TAMU Computer Networks 3 Transport Layer TAMU Computer Networks 2 Application Layer TAMU Computer Networks 1 Introduction Overview in distributed systems and cloud computing 1 A well-optimized Union-Find implementation, in Java A heap implementation supporting deletion TAMU Advanced Algorithms 3, Maximum Bandwidth Path (Dijkstra, MST, Linear) TAMU Advanced Algorithms 2, B+ tree and Segment Intersection TAMU Advanced Algorithms 1, BST, 2-3 Tree and Heap TAMU AI, Searching problems Factorization Machine and Field-aware Factorization Machine for CTR prediction TAMU Neural Network 10 Information-Theoretic Models TAMU Neural Network 9 Principal Component Analysis TAMU Neural Network 8 Neurodynamics TAMU Neural Network 7 Self-Organizing Maps TAMU Neural Network 6 Deep Learning Overview TAMU Neural Network 5 Radial-Basis Function Networks TAMU Neural Network 4 Multi-Layer Perceptrons TAMU Neural Network 3 Single-Layer Perceptrons Princeton Algorithms P1W6 Hash Tables & Symbol Table Applications Stanford ML 11 Application Example Photo OCR Stanford ML 10 Large Scale Machine Learning Stanford ML 9 Anomaly Detection and Recommender Systems Stanford ML 8 Clustering & Principal Component Analysis Princeton Algorithms P1W5 Balanced Search Trees TAMU Neural Network 2 Learning Processes TAMU Neural Network 1 Introduction Stanford ML 7 Support Vector Machine Stanford ML 6 Evaluate Algorithms Princeton Algorithms P1W4 Priority Queues and Symbol Tables Stanford ML 5 Neural Networks Learning Princeton Algorithms P1W3 Mergesort and Quicksort Stanford ML 4 Neural Networks Basics Princeton Algorithms P1W2 Stack and Queue, Basic Sorts Stanford ML 3 Classification Problems Stanford ML 2 Multivariate Regression and Normal Equation Princeton Algorithms P1W1 Union and Find Stanford ML 1 Introduction and Parameter Learning

Write smart with Markdown (citations, footnotes, figure, table and equation references)



I really enjoy myself writing papers and reports with Markdown. The syntax is relatively easy. Here is a quick syntax cheet sheet. Furthermore, this post focuses on citations, footnotes and figure references in Markdown.


Pandoc is a very powerful tool converting files between many formats. Regarding writing papers in Markdown, the most two important transfers might be from .md to .pdf and .md to Word(really?).

To generate a PDF file from Markdown file, the command is as simple as

pandoc -s -o test1.pdf


  1. A latex implementation is needed. I am using MiKTEX
  2. Download and install Pandoc
  3. Install a plug-in for figure and table references with pip install pandoc-fignos pandoc-tablenos pandoc-eqnos, you need python environment and pip for that.
  4. You may found VS Code is a good editor for Markdown. There are many related plug-ins you can use like vs-pandoc.


A good practice is to get the BibTeX format of the article and put all such information in a file like ref.bib in the same folder of the Markdown file. For example, on this page of a famous paper Google Bigtable, we get the BibTeX format on the bottom of the right box as follow.

 author = {Chang, Fay and Dean, Jeffrey and Ghemawat, Sanjay and Hsieh, Wilson C. and Wallach, Deborah A. and Burrows, Mike and Chandra, Tushar and Fikes, Andrew and Gruber, Robert E.},
 title = {Bigtable: A Distributed Storage System for Structured Data},
 journal = {ACM Trans. Comput. Syst.},
 issue_date = {June 2008},
 volume = {26},
 number = {2},
 month = jun,
 year = {2008},
 issn = {0734-2071},
 pages = {4:1--4:26},
 articleno = {4},
 numpages = {26},
 url = {},
 doi = {10.1145/1365815.1365816},
 acmid = {1365816},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {Large-Scale Distributed Storage},

Then, we put this piece of information in ref.bib file. To cite it in Markdown file, we use [@Chang:2008:BDS:1365815.1365816], the content after @ is basically the identity segment on the first line. Multiple citation can be separated by ; as [@article1;@article2]

In order to tell Pandoc to process those citation properly, use following Pandoc options. The --csl option specifies the format. You can download the right one from (Usually a journal would specify the preferred one)

pandoc --filter pandoc-citeproc --bibliography=ref.bib --csl=ieee.csl -o test1.pdf


Footnote is identified with [^1]. The content starts with [^1]:, followed by details. An example is as below.

On the first month, this application will attract 5% of the students in Texas A&M and UT Austin.[^1] There are 68,825 enrolled students in TAMU. 

[^1]: author: nobody, ID: 12345.
*supported by xxx.

Other content...

Figure, table and equation references

Figures can be referenced as below. Basically, {#fig:figure-id-or-name} is for the source, while {@fig:figure-id-or-name} is for the reference. Figure x will substitute the reference.

The result is shown in {@fig:test-result}.

![Test result](pig/test.png){#fig:test-result}

Other content...

If you prefer other name rather than Figure, we can specify it with two lines in the header section of Markdown file as below.

fignos-cleveref: On
fignos-plus-name: Fig

Extra Pandoc options are needed for figures, tables and equations. They are shown as below combined with those for citations.

pandoc --filter pandoc-eqnos --filter pandoc-tablenos --filter pandoc-fignos --filter pandoc-citeproc --bibliography=ref.bib --csl=ieee.csl -o test1.pdf

Table references

For table reference use the pair of {#tbl:table-id} and {@tbl:table-id}. The table header should be placed at the end of table, shown as below.

|Time after launch |User population / million |
|9 months |0.01 |
|1 year |0.5 |
|2 years | 18.7 |
|3 years | 70 |
Table: User growth of the application {#tbl:user_growth}

Equation references

For equation reference, just use the pair of {#eq:eq-id} and {@eq:eq-id}.

The Mass energy equivalence is shown as Eq. {@eq:m-e}.

$$E = m c^2$$ {@eq:m-e}

Creative Commons License
Melon blog is created by melonskin. This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
© 2016-2020. All rights reserved by melonskin. Powered by Jekyll.