Markdown Nedir?

Dijital ortamda bir yazı yazmak istediğimizde (makale, blog yazısı vb.) yazının akışına uygun olarak bazı görsel biçimler (başlık, liste, tablo gibi) kullanmak isteriz.

AA

HTML (Hyper Text Markup Language / Hiper Metin İşaretleme Dili) elbette iş görmektedir. Ancak, bir yazı için düzenlemesi biraz uğraş gerektirir ve hatalara sebebiyet verebilir. Bu amaçla çeşitli editörlerde metinler yazılmakta ve HTML’e dönüştürmesi sağlanmaktadır. Örnek olarak WordPress metin editörü düşünülebilir. Diğer yandan, 2004 yılından bu yana hayatımızda olan, ancak özellikle GitHub ve ardından modern içerik yönetim sistemleriyle birlikte kullanım yaygınlığına kavuşan, okunması ve yazması kolay düz metin formatı da mevcut; Markdown.

Markdown Trendline

Elbette bu şahsi görüşüm. Google Trends grafiğine baktığımızda asıl arama yoğunluğunun 2011 yılı itibariyle başladığını görmekteyiz, Github aramalarıyla kıyasladığımızda (Github 2008 yılında kuruldu) bir korelasyon olduğu söylenebilir.

Markdown

Markdown, John Gruber ve Aaron Swartz tarafından geliştirilmiş ve 2004 yılından bu yana kullanılan açık bir formattır. En basit tanımı ile, web yazarları için text-to-HTML (metinden HTML’e) dönüştürme aracıdır. Markdown tasarımının temel hedefi geliştiricileri tarafından okunulabilirlik (readability) olarak belirtilmektedir1. Bu amaçla e-posta yazımı temelinde ağırlık göstermektedir.

Daha detaylı bir tanım olarak, düz metin biçimlendirme (markup language) sözdizimine (syntax) sahip hafif bir düz metin biçimlendirme dili (plain text formatting syntax) olarak ifade edilebilir. Aynı isimli araç sadece HTML dilini desteklese de günümüzde pek çok formatta çıktı üretebilmek için de kullanılmaktadır.

Bu bağlamda “Markdown” iki şeydir2:

  1. Düz bir metin biçimlendirme sözdizimi (plain text formatting syntax),
  2. Perl ile yazılmış, düz metin biçimlendirmesini HTML’ye dönüştüren bir yazılım aracı (Markdown.pl).

Bu yazı çerçevesinde “Markdown” bir “plain text formatting syntax” olarak ele alınmaktadır.

Markdown resmi olmayan bir tarifname3 ve HTML dönüştürme işlemi için bir referans uygulama ile karakterize edilmiştir. Geçen zamanla birlikte, ihtiyaçlar doğrultusunda birçok Markdown uygulaması ve özellik ortaya çıkmış, bunlardan bazıları (tablolar, dipnotlar, tanım listeleri ve HTML blokları gibi) temel syntax üzerine dahil edilmiştir.

Ortaya çıkan uygulamalar arasında bazı farklılıklar söz konusudur. Bu farklılıklar için babelmark4 aracı üzerinden karşılaştırma yapılabilir. Grubber tam bir standardizasyonun doğru olmayacağını “Farklı siteler (ve insanlar) farklı ihtiyaçlara sahiptir. Hiçbir sözdizimi herkesi mutlu edemez.” söyleriyle savunmaktadır. Ek olarak, Wikipedia sitesinde bulunan Comparison of document-markup languages5 listesine de ayrıca göz atmanızı öneririm6.

Genellikle (GitHub’dan da aşina olduğumuz üzere) Readme dosyalarının oluşturulmasında kullanılsa da çevrimiçi tartışma forumlarında ve zengin metin (rich text) oluşturma araçlarında da markdown yapısından sıklıkla faydalanılmaktadır. Markdown pek çok programlama dili (R için Rmarkdown7 gibi), platform (Github8 gibi) ve framework / library (Markdig9 gibi) tarafından desteklenmektedir.

Markdown Trendline

Mart 2016’da RFC 7763 ve RFC 7764 yayınlanmıştır. RFC 7763, orijinal varyant ile MIME tipi text/markdown’i sunmaktadır. RFC 7764 ise MultiMarkdown, GitHub Flavored Markdown (GFM), Pandoc, CommonMark ve Markdown Extra arasında tanımlıdır10.

Markdown dosyaları genellikle *.md uzantılıdır.

Markdown Örneği

Aşağıda, taslak metinlerden oluşan çeşitli markdown tanımları yer almaktadır. Bu tanımlar biçim kazandırılacak metnin genellikle önünde ve/veya önünde ve arkasında tanımlanırlar. Aşağıda ortak kabul gören kodları ve kullanımlarını görebilirsiniz. İlerleyen yazılar içerisinde ayrıca farklılık taşıyan (örn. Grav tarafından kullanılan) özelliklere de değinmeye çalışacağım.

Heading Tanımları

# bölüm başlıklarını (heading; h1, h2, h3…, h6) ifade eder ve adedi kadar heading’i tanımlar.

# Heading
<h1>Heading</h1>

## Sub-heading
<h2>Sub-heading</h2>

### Sub-heading
<h3>Sub-heading</h3>

Paragraf

Bir paragraf için yeni bir satır oluşturmak yeterlidir. Her yeni satır bir paragraf olarak tanımlanır. Bir paragrafın tamamı tek bir satır olabileceği gibi, arada boş satır bırakmadan alt satırdan da devam etmek mümkündür. Paragraf tanımı Block-Level‘dır; div, pre, table gibi. Bu nedenle, yazılmadan önce bir satır boşluk (toplamda 2 ENTER) bırakılmalıdır. Span-Level (inline) elemanlar olduğu gibi yazılabilir. Line Break (<br \>) için satır sonunda 2 boşluk (space) kullanılır.

Paragraphs are separated by a blank line.
<p>Paragraphs are separated by a blank line.</p>

Two spaces at the end of a line
produces a line break.
<p>Two spaces at the end of a line<br />
produces a line break.</p>

Kalın, Eğik Yazı ve Monospace

Bir metni bold (kalın), eğik (italic) veya her ikisi ile birlikte biçimlendirmek mümkündür. Bold için metnin önüne ve ardına **, italic için _, monospace için ise ``` eklemek yeterlidir.

Text attributes _italic_,
**bold**, `monospace`.
Text attributes <em>italic</em>,
<strong>bold</strong>, <code>monospace</code>

Yatay Çizgi

Metin bölümlendirme / ayırma amacıyla kullandığımız horizontal rule için --- kullanmak yeterlidir.

---
<hr />

Listeler

Bullet list için * ve numbered list için rakam kullanılabilmektedir.

Bullet list:
  * apples
  * oranges
  * pears
<ul>
<li>apples</li>
<li>oranges</li>
<li>pears</li>
</ul>

Numbered list:
  1. wash
  2. rinse
  3. repeat
<ol>
<li>wash</li>
<li>rinse</li>
<li>repeat</li>
</ol>

Bağlantı

Bir metni bağlantı haline getirmek için metin köşeli parantez içerisine alınır ve yanında parantez içerisinde ilişkilendirilecek bağlantı belirtilir.

An [example](http://example.com)
An <a href="http://example.com">example</a>.

Görsel

Metin içerisinde görseller de kullanmamız mümkün. Görsel tanımı için ünlem ve köşeli parantez içerisinde görselin alt, parantez içerisinde görselin adı / yolu, tırnak içerisinde title tanımları yapılır.

![Icon-pictures.png](../markdown-nedir)
<img src="https://ceaksan.com/tr/markdown-nedir/" />

Alıntı

Bir cümleyi alıntı olarak belirtmek için cümlenin başına > koymamız yeterlidir.

> Markdown uses email-style > characters for blockquoting.
<blockquote>Markdown uses email-style &gt; characters for blockquoting.</blockquote>

Escape karakteri, \‘dir ve aşağıdaki karakterler için kullanılabilir.

  • # hash mark
  • . dot
  • + plus sign
  • - minus sign (hyphen)
  • ! exclamation mark
  • * asterisk
  • _ underscore
  • \ backslash
  • ` backtick
  • {} curly braces
  • [] square brackets
  • () parentheses

Yazım biçimleriyle ilgili daha detaylı bilgi için Markdown: Syntax11 ve Markdown Guide – Cheat Sheet12 sayfalarını inceleyebilir, Markdown: Dingus13 sayfası aracılığıyla Markdown yazım biçimini kullanmaya başlayabilirsiniz.

Markdown Editörler

Ayrıca, Dropbox Paper da Markdown desteği sunmaktadır14.

Visual Studio Code - Markdown

Ek olarak, Atom ve Visual Studio Code editörleri ile de Markdown biçimlerini görüntülemek mümkün. Atom editör işlemleri için kullanılabilecek geliştirme paketleri (extension) mevcut.