Resources

Academic Writing in Markdown

A practical guide for students who want a calmer, more structured way to draft notes, blog posts, lab protocols, and academic documents.

Academic Writing

If I could hand every incoming student in my research lab a single piece of non-negotiable advice on day one, it wouldn’t be about running simulations or mastering microfabrication.

It would be this: Throw away your proprietary, bloated note-taking apps and learn Markdown.

Every semester, I watch brilliant, hardworking students lose hours of productive momentum to chaotic notes. You know the drill: half-baked thoughts scribbled in Apple Notes, equations lost inside a random Word document on an unbacked-up desktop, code snippets buried in a private Slack DM, and lab results scattered across three different cloud drives. When it comes time to write the conference paper, compile the midterm report, or defend a thesis, panic ensues.

Here is an uncomfortable truth: Your research is only as good as your ability to document, reproduce, and communicate it.

The fix isn’t buying another proprietary subscription app that locks your data behind proprietary formats. The fix is a workflow built on open, future-proof, lightning-fast plain text.

Let’s talk about why Markdown combined with VS Code and Quarto will fundamentally change how you learn, think, and publish.

1. What Is Markdown?

Markdown is a lightweight markup language created in 2004 with a radical premise: you should be able to format text using simple punctuation characters without taking your hands off the keyboard.

Unlike a .docx file—which is a zipped XML archive filled with styling metadata—a .md file is pure, human-readable plain text.

Why does this matter for researchers and engineers?

  • Zero Lock-in & Future-Proof: A plain text file written today will be readable 50 years from now on any operating system, toaster, or supercomputer.
  • Version Control Ready: You can track every single line change using Git and GitHub.
  • Frictionless Velocity: No clicking around dropdown menus to bold a heading or resize a table. You think, you type, it formats.

2. Setting Up VS Code

Let’s turn Visual Studio Code—a free, open-source editor you likely already use for programming—into a powerhouse writing environment.

Step 1: Install VS Code

If you don’t have it yet, download and install VS Code.

Step 2: Install Essential Extensions

Open VS Code, press Ctrl+Shift+X (Windows/Linux) or Cmd+Shift+X (macOS) to open the Extensions tab, and install:

  1. Markdown All in One (by Yu Zhang) — Gives you keyboard shortcuts (like Ctrl+B for bold), automatic table of contents generation, and auto-completing lists.
  2. Markdown Preview Enhanced (by Yiyi Wang) — Renders real-time math, code execution, and diagrams side-by-side.
  3. Paste Image (by mushan) — Allows you to take a screenshot and paste it directly into your markdown document with Ctrl+Alt+V / Cmd+Alt+V, automatically saving the image in an assets folder.
  4. Quarto (by Posit) — Supercharges Markdown with scientific publishing capabilities, dynamic code execution, and publication-grade exports.
💡 Pro Tip: Organize your notes by "Workspaces." Create a dedicated folder on your 
machine named `Lab_Notebook` or `Course_Notes`, open that folder in VS Code, and initialize 
it with Git. You now have a searchable, cloud-synced knowledge base.

3. Markdown Syntax

You can learn 90% of what you will ever need in under five minutes. Here is your cheat sheet:

Headings & Structure

Use # symbols. The number of hashes denotes the heading level:

# Level 1: Course / Project Title
## Level 2: Experiment Module or Lecture Topic
### Level 3: Sub-section or Specific Hypothesis

Emphasis & Text Styling

*Italic text* for emphasis
**Bold text** for key findings or core definitions
~~Strikethrough~~ for deprecated ideas (two ~ before and after)
`inline_code()` for variables, functions, or file names

Lists & Action Items

- Bullet point
  - Nested bullet point

1. Step one: Calibrate sensor
2. Step two: Record baseline voltage

- [x] Collect SEM imaging data
- [ ] Analyze signal-to-noise ratio in Python

Math & Scientific Equations (LaTeX Syntax)

Markdown supports inline and block LaTeX out of the box:

Inline math: The measured resistance was $R = 4.7\,\text{k}\Omega$.

Block equation:
$$\nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t}$$

Code Blocks with Syntax Highlighting

You can add beautifully formatted code by placing it according to this structure:

  1. First type: ```“python”
  2. Write you code in a new line
  3. Close the block using: ```

This is how it looks:

import numpy as np

# Quick filtering test
data = np.loadtxt("sensor_log.csv", delimiter=",")
print(f"Mean voltage: {np.mean(data):.3f} V")

Links & Images

[Read the documentation](https://quarto.org)
![Experimental Setup Diagram](./images/setup_diagram.png)

A good habit is to keep your images in a dedicated folder:

project/
├── my_report_on_wearable_devices.md
└── images/
    └── wrist-sensor.png

Clean Tables

| Sample ID | Substrate Material | Gauge Factor | Yield (%) |
| :--- | :--- | :---: | ---: |
| SMP-01 | Polydimethylsiloxane | 2.45 | 98.2% |
| SMP-02 | Polyimide | 1.12 | 94.0% |

4. Create Beautiful Reports with Quarto

Writing clean notes is great, but here is where things get genuinely thrilling: Quarto.

Quarto (.qmd) is an open-source scientific publishing system built on top of Pandoc. It takes your simple Markdown notes, weaves in live executable code (Python, R, Julia), and compiles them into stunning, publication-ready PDFs, interactive HTML dashboards, slides, or even complete books.

No more copying numbers from a Python script, pasting them into Excel, generating a chart, and pasting the chart into Word.

Step 1: Install Quarto CLI

Download the installer from quarto.org.

Step 2: Create a Quarto Document (`report.qmd`)

Create a file called report.qmd in VS Code. At the very top, add a YAML front-matter header:

---
title: "Characterization of Wearable Piezoresistive Sensors"
subtitle: "Lab Progress Report — Week 4"
author: "Alex Martinez-Castro"
date: today
format:
  html:
    theme: cosmo
    toc: true
    number-sections: true
    code-fold: show
  pdf:
    documentclass: scrartcl
    geometry: "margin=1in"
execute:
  echo: true
---

Step 3: Embed Live Code & Auto-Generated Plots

Add an executable Python code block directly into your document:

## Experimental Data Analysis

We recorded the relative resistance change ($\Delta R / R_0$) across varying strain levels.

```{python}
#| label: fig-strain-response
#| fig-cap: "Relative resistance variation as a function of tensile strain."

import matplotlib.pyplot as plt
import numpy as np

strain = np.linspace(0, 50, 100)
gauge_factor = 2.4
delta_r = gauge_factor * (strain / 100) + 0.02 * np.random.normal(size=100)

plt.figure(figsize=(6, 3.5), dpi=150)
plt.plot(strain, delta_r, 'o', markersize=3, color='#0284c7', label='Measured Data')
plt.plot(strain, gauge_factor * (strain / 100), '--', color='#e11d48', label='Linear Fit')
plt.xlabel("Tensile Strain (%)")
plt.ylabel("Relative Resistance ($\Delta R / R_0$)")
plt.legend(frameon=True)
plt.grid(True, linestyle=':', alpha=0.6)
plt.show()
```

As demonstrated in @fig-strain-response, the device exhibits near-ideal linear behavior up to 50% elongation.

Step 4: Render Your Masterpiece

In the VS Code terminal, run:

quarto preview report.qmd

Or render directly to PDF:

quarto render report.qmd --to pdf

Quarto executes the Python script, captures the plot, handles cross-references (@fig-strain-response), typesets the equations, and outputs a document formatted with the visual elegance of a top-tier journal article.

The Challenge

Switching your workflow takes a few days of intentional practice, but the return on investment over the course of your degree—and your career—is exponential.

Here is my challenge to you: For the next 7 days, commit to writing every single lecture note, reading summary, and lab log in Markdown.

Once you experience the speed of plain text combined with the publishing power of Quarto, you will never look back.