You can edit this page to suit your needs. For instance, here we have a no copyright statement, a colophon and some other information. This page is based on the corresponding page of Ken Arroyo Ohori's thesis, with minimal changes.
:::
:::{.var .copyright}
**No copyright**
\cczero\ This book is released into the public domain using the CC0 code. To the extent possible under law, I waive all copyright and related or neighbouring rights to this work.
%
To view a copy of the CC0 code, visit: (http://creativecommons.org/publicdomain/zero/1.0/)
:::
:::{.var .colophon}
This document was typeset with the help of \href{https://sourceforge.net/projects/koma-script/}{\KOMAScript} and \href{https://www.latex-project.org/}{\LaTeX} using the \href{https://github.com/fmarotta/kaobook/}{kaobook} class.
The source code of this book is available at:\\\url{https://github.com/hasanalrasyid/pubsEngine-template}
Dalam perjalanan hidup seorang penulis, setidaknya sekali pasti pernah terbersit keinginan untuk bisa menulis ide tanpa perlu berbagai pengetahuan tambahan terkait *typesetting*.
Bukan hanya \latex, hal ini juga berlaku untuk program penulisan dokumen yang menganut paradigma *What You See is What You Get* sekalipun.
Kondisi yang agak ironis, mengingat *WYSWYG* disusun dalam rangka mengurangi syarat pengetahuan mengenai *typesetting*.
Berapa banyak dalam hidup kita yang mampu mengingat tombol mana dulu yang perlu di-klik untuk dapat mengubah bentuk awalan bab suatu judul dari *Chapter x* menjadi *Bab x*, apatah urutan yang perlu dilakukan dari klik-pertama hingga klik-terakhir.
Saya pribadi merasa kerja *typesetting* adalah suatu kerja yang tak terpisahkan dari proses produksi suatu manuskrip.
Meski demikian, tak dapat dipungkiri bahwa pengetahuan mengenai *typesetting*, baik itu \latex maupun program lain, sebagai pengetahuan yang tidak berkaitan langsung dengan *passion* yang kita dalami.
Ini yang mendasari keinginan kami untuk menyusun program *pubsEngine*.
Semoga semangat kami dalam upaya memisahkan setegas mungkin antara kerja *typesetting* dan kerja substantif akan dapat mencapai para penulis dalam menulis suatu substansi dengan lebih lancar dan memuaskan.
Bagian pertama dari buku ini mengetengahkan perkenalan terhadap dua sistem utama yang menjadi pondasi bagi `pubsEngine`, yaitu `Markdown` dan `Pandoc`.
Bagian kedua mengetengahkan beberapa fitur yang disediakan oleh `pubsEngine`.
Bagian terakhir menyajikan hal-hal khusus yang hanya terkait dengan tipe keluaran yang dihasilkan `pubsEngine`.
Program ini kami susun sebagai sebuah prototype atas sebuah ide.
Oleh sebab itu, kami berharap agar para penulis menggunakannya sebagai sebuah prototype pula.
Dalam wujudnya sebagai prototype, kita akan menemukan berbagai khilaf, *bug*, dan kekurangan yang tak dapat dipandang sebagai penera kualitas.
Seyogyanya, mengingat sifat pengembangan `pubsEngine` yang *open-source*, kami berharap berbagai kekurangan tersebut dapat menjadi media bagi jalinan interaksi silaturahim antara kami dan penulis dalam kesetaraan kolaborasi pengembangan perangkat lunak.
Tak lepas pula harapan kami agar `pubsEngine` dapat menjadi ajang bagi kita untuk mengembangkan lingkungan *open-source* yang luhur dan bermartabat di negeri tercinta, Indonesia.
Dokumen ini merupakan sebuah panduan, merangkap contoh nyata untuk digunakan penulis dalam membuat dokumen memakai pubsEngine.
Dokumen ini diturunkan dari contoh yang disediakan jurnal \aastex.
Dalam dokumen ini, kami menyajikan beberapa perintah markdown umum sekedar sebagai pengingat.
Kami juga memasukkan beberapa fitur Pandoc yang digunakan dalam pubsEngine.
Hal ini diperlukan sebagai pengantar penjelasan tentang beberapa fitur utama pubsEngine yang merupakan suatu bentuk pengembangan dari markdown dan Pandoc.
pubsEngine menganut sistem teks-penuh.
Ini berarti, proses penyusunan Manuskrip dengan pubsEngine dapat dikendalikan melalui Version Control System semacam GiT, mercurial, darcs, dsb).
Beberapa fitur pubsEngine memerlukan pengetahuan yang cukup atas tema-tema khusus, misalnya Python, nodeJS, GoJS, \latex, dsb.
Di dalam dokumen ini, kami hanya menyediakan contoh penerapan fitur seminimal mungkin untuk menunjukkan bahwa fitur tersebut bekerja dengan baik.
Saat ini, proses penyusunan dokumen secara digital dapat dilakukan dengan setidaknya dua kelompok pendekatan perangkat lunak.
Pendekatan pertama memiliki paradigma *What You See is What You Get*.
Penulis dihadapkan pada antar-muka yang benar-benar mirip kertas.
Harapannya, pada proses ini, penulis dapat memastikan bahwa hasil cetak dokumennya akan sama persis dengan yang muncul di tampilan perangkat lunak.
Pengembangan *open-source* untuk perangkat lunak paradigma pertama ini cukup terwakili oleh perangkat LibreOffice.
Di lain pihak, kita punya pilihan pendekatan plain-text.
Dalam pendekatan ini, seorang penulis menyusun suatu file teks yang bukan hanya berisikan substansi tulisan, namun juga teks tambahan yang mengindikasikan sifat editorial dokumen cetak yang diharapkan.
Selanjutnya, teks ini dijadikan sebagai input suatu program pemrosesan untuk menghasilkan dokumen siap cetak (PDF atau DVI).
`pubsEngine` mengambil peran dalam pendekatan yang kedua, *plain-text*.[@sidenote `pubsEngine` juga dikembangkan secara *open-source*, sehingga kontribusi sekecil apapun akan sangat diapresiasi.]
Secara umum, seorang penulis melakukan dua sifat kerja yang berbeda dalam menyusun suatu makalah. Sifat kerja yang pertama adalah kerja substantif. Dalam kerja substantif, seorang penulis melakukan proses penggubahan suatu karya tulis, dari tiada menjadi ada.
Dalam kerja substansial, umumnya penulis menguasai penuh materi yang akan dituangkan dalam tulisan.
Sifat kerja kedua adalah kerja editorial.
Kerja editorial hampir sama sekali tidak berhubungan dengan kerja substantif.
Termasuk dalam kerja editorial adalah penentuan jenis huruf, proses penentuan lebar batas halaman, penentuan ukuran spasi, penentuan jenis penekanan dalam teks ( *miring*, **tebal**, ***tebal dan miring***, [garis bawah]{.underline}, `verbatim`, ~~garis tengah~~, superscript x^2^, underscript H~2~O, dan lain sebagainya), penyusunan layout halaman, penyusunan seluruh struktur manuskrip dari sampul depan hingga belakang, dst.
Dua paradigma perangkat lunak, WYSWYG dan plain-text, mendekati kerja editorial dengan cara yang berbeda.
Dalam WYSWYG, kerja editorial tercermin dalam langkah-langkah `klik kanan/kiri`, `drag-drop`, membuka menu/jendela pilihan dan pengaturan, dsb.
Dalam paradigma plain-text, kerja editorial ini tercantum secara nyata sebagai teks yang dituliskan sebagaimana kerja substansial (seringkali dalam file yang sama).
Tentu terdapat kesepakatan tertentu yang mengatur bagaimana suatu tulisan akan dibaca sebagai perintah editorial ataukah sebagai bagian dari substansi tulisan.
Pada umumnya, file teks yang dihasilkan dari paradigma plain-text pada akhirnya berisi gabungan antara kalimat-kalimat substansi dan perintah-perintah editorial.
Sebagai sebuah perangkat lunak penyusunan makalah yang telah matang, \latex telah berkembang menjadi suatu alat yang cukup kompleks.
Perkembangan ini merupakan akibat positif dari sifat pengembangan \latex yang *open-source*.
Selain itu, modularitas dalam \latex memungkinkan para penggunanya untuk mengembangkan \latex secara terfokus pada satu fitur, tanpa perlu memahami seluruh aspek yang tersedia dalam \latex sejak awal.
Di lain pihak, kompleksitas ini berakibat pada kemunculan rasa berat para penulis pemula dalam menggunakan \latex.
`pubsEngine` berusaha menurunkan tembok penghalang ini.
Harapan pengembangan `pubsEngine`, para penulis dapat segera menceburkan diri ke dalam proses produksi substantif, dan meminimalkan waktu yang diperlukan dalam proses editorial.
Selain itu, `pubsEngine` berusaha semaksimal mungkin memisahkan bagian editorial dan bagian substantif dari makalah yang dihasilkan.
`pubsEngine` menggunakan berkas teks berformat `Markdown` sebagai masukan yang kemudian selanjutnya akan diproses menjadi keluaran dokumen \latex (`.tex`) atau presentasi web (`RevealJS`).
Di belakang layar, `pubsEngine` menggunakan `Pandoc` dalam proses pengubahan dari `Markdown` menjadi \latex.
Lebih jauh lagi, dokumen `.tex` ini diproses oleh `lualatex` untuk menghasilkan berkas PDF yang siap cetak.
1.`Meta`: Bagian ini berisi hal-hal yang umumnya merupakan bagian editorial. `Meta` berada di bagian teks paling awal, dan diapit diantara baris yang berisi `---`. Umumnya berbentuk deklarasi variabel, misalnya `bibzotero: pubsEngine`. Format meta yang dipakai adalah `Yaml`. `Meta` dapat tersimpan dalam file yang berbeda, untuk dokumen ini misalnya tersimpan dalam file `manuscript.yaml`. Jika terdapat dua variabel terdefinisikan dalam `manuscript.yaml` dan dalam dokumen utama ini (`manuscript.md`), maka definisi pada dokumen utama menjadi prioritas.
2.`Inti`: Bagian ini sebagian besar berisi substansi. Perintah-perintah editorial di bagian ini sering kali muncul hanya karena benar-benar diperlukan dan tiada cara lain, misalnya *emphasis*, dan **cetak tebal**. Kita dapat membagi bagian ini menjadi beberapa `Block` yang dipisahkan oleh satu baris kosong. Beberapa Block yang dapat kita kenali antara lain `Paragraph`, `CodeBlock`, `RawBlock`, `OrderedList`, `Header`, `BulletList`, `Table`, `Div`. Di dalam setiap Block, sering kita temukan satu atau lebih `Inlines` yang dapat berupa `String (teks)`, `Emphasis`, `Underline`, `Strong`, `Strikeout`, `Superscript`, `Subscript`, `Cite`, `RawInline`, `Code`, `Math`, `Link`, `Image`, `Note`.
Tiada pembahasan tentang \latex dan turunannya tanpa adanya keterangan mengenai persamaan matematika. Secara umum, dalam `Markdown`, kita dapat menggunakan lingkungan \latex yang telah umum (`$$`).
Kita juga dapat menggunakan skenario \latex yang lain, misalnya:
Persamaan dalam baris paragraf dapat dituliskan dengan diapit tanda `$` tunggal. Contoh persamaan ini: $y = 5\cdot x^2$ dimunculkan dengan perintah `$y = 5\cdot x^2$`.
Persamaan di bawah ini menempel pada paragraf di atasnya.
Nilai `size` dalam hal ini adalah lebar gambar sebagai pengali dari `\linewidth` (lebar baris dalam \latex).
Pastikan ukuran gambar yang akan dimasukkan sudah sesuai dengan ukuran halaman cetak.
Gambar yang merentang seluruh lebar halaman dalam tatanan dikolom, dan pembahasan mengenai ukuran gambar secara lebih detil akan dibahas pada bab Fitur pubsEngine.
Contoh sitasi [@mitchell1980] dapat diperoleh dengan perintah `[@mitchell1980]`.
Sitasi yang lebih kompleks semacam [@mitchell1980; @astropycollaboration2013; @arnold1998] dapat juga dimunculkan dengan `[@mitchell1980; @astropycollaboration2013; aarnold1998]`.
Penulis juga dapat mencermati bahwa rujukan artikel tersebut secara otomatis juga dimunculkan di Daftar Pustaka.
Penjelasan lebih lengkap tentang metode membuat rujukan ini dapat dilihat dalam panduan utama [Pandoc Manual](https://pandoc.org/MANUAL.html#citations-in-note-styles).
Transliterasi bahasa Arab menggunakan modul [`Nusantara`](https://github.com/hasanalrasyid/Nusantara) dari \latex.
Modul ini perupakan penurunan dari modul `arabxetex` dan `arabluatex`.
Module `Nusantara` menyediakan transliterasi bahasa Arab yang dilandaskan pada tradisi yang berkembang di Indonesia (kepulauan Nusantara, sesuai nama modul).
Modul ini juga menyediakan implementasi eksperimental sederhana untuk _imla'_ bagi huruf _hamzah_`.nu "a`.
Implementasi tersebut meliputi _hamzah_ yang berdiri sendiri `.nu "a`, _hamzah_ di atas kursi alif `.nu "A`, di bawah kursi alif `.nu "i`, pada kursi ya dan wau `.nu "w / "y`, dan _hamzah__washol_`.nu _a / ~a`.
Dalam skenario ini, kita menggunakan jenis kelas `[.nu]` sebagaimana dalam ``[.nu rabbi fa-_infa`naa bibarkatihim]`` yang akan menghasilkan ``.nu rabbi fa-_infa`naa bibarkatihim``.
Modul `Diagram` yang sesuai dengan `Embedded Domain-spesific Language` (EDSL) dari modul Haskell [`diagrams`](https://hackage.haskell.org/package/diagrams) dapat dimasukkan dengan jenis kelas `[.diagram]`.
Secara umum, jenis kelas yang digunakan adalah `[.script]`, kemudian secara berurutan diikuti dengan jenis kelas program delegasi (`.py` untuk `Python`).
Keluaran perintah yang kita harapkan akan diindikasikan selanjutnya.
Terdapat tiga pilihan untuk keluaran yang diharapkan, `.img` untuk gambar, `.md` untuk teks `Markdown`, dan `.lib` untuk library/modul.
Terkhusus untuk library/modul, keluaran ini tidak akan menampilkan material apapun dalam dokumen.
Untuk mengurangi pengulangan penulisan kode, kita dapat menyimpan fungsi tertentu sebagai library untuk kemudian disimpan dalam direktori `_build/temp/lib` dan dapat diakses oleh seluruh blok program terkait dalam bahasa tersebut di seluruh dokumen.
description="This paragraph represents the description of the additional `libPy1` library that will be inserted into the pdf output. This description is held in a string variable named `description`. Any **valid markdown syntax** can be used. The `import` statement to `libPy1` will be prepended by pubsEngine, thus removed the necessity of explicit import in any scripts below."
Jenis kelas `.md` akan menampilkan teks yang selanjutnya diolah sebagai `Markdown` oleh `pubsEngine`.
Dalam skenario ini, script yang ditulis harus mengeluarkan teks `Markdown` yang valid ke `stdout`.
Penggunaan `.md` diprediksi akan banyak berperan dalam produksi tabel atau paragraf dinamis yang dapat menyesuaikan nilai berdasarkan hasil keluaran program eksternal.
Jenis kelas `.img` akan mengindikasikan bahwa script yang ditulis akan menghasilkan suatu gambar.
Ini berarti, script yang kita buat akan menjalankan proses di luar program dan harus menghasilkan suatu berkas gambar di dalam direktori `_build/auto` dengan menggunakan nama berkas yang sesuai dengan variabel `file`.
Tentu penulis bertanggung-jawab untuk menjaga konsistensi keberadaan nama berkas ini.
Implementasi gambar ini dapat dilihat pada [@fig:py].
Demi fleksibilitas dan dukungan jenis diagram yang lebih kaya, kita bisa memakai [GoJS](https://gojs.net/latest/samples/).
Fitur ini memungkinkan kita menyusun diagram yang sangat kompleks.
Jika dibandingkan dengan `Diagrams` dari lingkungan Haskell, maka fitur `GoJS` diharapkan dapat mempermudah proses penyesuaian bagi penulis yang telah memiliki sedikit pemahaman dalam bahasa pemrograman imperatif, terutama `javaScript/nodeJS`.
Implementasi pada [@fig:goJS] adalah hasil dari kode berikut.
Diagram Feynman didasarkan pada modul \latex bernama[`FeynMP`](https://ctan.org/pkg/feynmf?lang=en).
Penulis dipersilakan untuk membaca kembali dokumentasi modul tersebut untuk memahami detil perintahnya.
Perlu dicatat, bahwa blok gambar `FeynMP` dalam dokumen ini selanjutnya akan dimasukkan oleh `pubsEngine` ke lingkungan `\begin{math}...\end{math}` di dokumen \latex akhir.
Contoh implementasi diagram Feynman dalam dilihat di [@fig:FeynMP] yang dihasilkan oleh blok berikut.
Keterhubungan dengan Zotero dapat disambungkan melalui `addon` [`Better BibTeX`](https://retorque.re/zotero-better-bibtex).
Setelah proses pemasangan `addon` ini selesai di dalam Zotero, `pubsEngine` dapat mengambil secara otomatis seluruh data bibliografi bagi koleksi yang sebelumnya sudah diatur dalam variabel yaml `bibzotero`.
`pubsEngine` akan mengambil koleksi tersebut dari *group* pertama (umumnya bernama `My Library`).
Aplikasi Zotero perlu dijalankan terlebih dahulu, sebelum `pubsEngine` dipanggil untuk mengolah data.
Pada akhir cerita, `pubsEngine` akan menyimpan `.bib` yang diperlukan dalam direktori `_build`.
Proses \latex akan berjalan seperti biasa setelah tahap penyimpanan bibliografi ini.
Suatu teks dapat dianggap sebagai variabel dengan mendefinisikan Div dengan jenis kelas `.var .namaVariabel` dan kemudian dapat dimunculkan dengan notasi rujukan `[@var:namaVariabelInline]`.
Potongan teks variabel di atas dapat kita munculkan di sini dengan perintah `[@var:v1]`. [@var:v1] Kemudian teks ini adalah lanjutan dari teks sebelumnya.
Keluaran ini berbentuk dokumen PDF yang memenuhi format artikel.
Format ini diturunkan dari template yang telah disediakan oleh *American Astronomical Society* melalui format \latex yang diterbitkan sebagai sebuah modul [AASTeX](https://journals.aas.org/aastex-package-for-manuscript-preparation/).
Dokumen \latex yang dihasilkan dalam direktori `_build` adalah dokumen \latex siap proses dengan `lualatex namafile.tex`.
Penulis dapat langsung menyimpan isi direktori tersebut dalam suatu berkas `.zip` dan mengirimkannya ke penerbit untuk diproses atau dikomentari.
`Pandoc` dapat memahami seluruh perintah \latex apa adanya tanpa pengubahan apapun.
Kebebasan ini memungkinkan penulis untuk memasukkan fitur-fitur \latex langsung ke dalam dokumen jika fitur tersebut tidak dapat disajikan melalui `pubsEngine`.
# Keluaran tipe Buku (`Book`) {image=seaside height=7.5cm}
Keluaran tipe ini didasarkan pada template \latex yang dikenal sebagai [`kaobook`](https://github.com/fmarotta/kaobook).
Beberapa fitur yang telah diaktifkan antara lain:
Penambahan partisi halaman dengan menggunakan Judul tingkat 1 dengan jenis kelas `.partition`, sebagai contoh: `# Fitur Khusus bagi Setiap Tipe Keluaran {.partition style=kao}`.
Pemilihan tipe *layout* kepala Judul Bab tingkat 1 melalui variabel `style`.
Tipe yang tersedia antara lain `plain`, `kao`, `bar`, `lines`. Secara *default*, tipe yang terpilih adalah `kao`.
Penambahan gambar pada kepala Judul Bab tingkat 1 bisa dilakukan dengan menambahkan variabel `image`, misalnya `# Keluaran tipe Buku {image=seaside}`.
Gambar ini selalu merentang lebar halaman dan memiliki ketinggian sesuai variabel `height`, atau mengikuti standar `7.5cm`.
Penambahan gambar akan memaksa layout judul Bab menjadi `bar`.
Penggunaan sidenote[-0.5em @sidenote Sidenote ini akan berubah menjadi catatan kaki biasa pada tipe keluaran selain `book`]. Catatan samping ini dapat digeser ke atas atau ke bawah dengan menambahkan ukuran standard \latex di awal kode (`em`,`pt`, dsb.). Berikut adalah contoh dengan pergeseran ke atas sebesar `0.5em`: `[-0.5em @sidenote Sidenote ini akan ...]`
Penggunaan marginnote untuk sidenote yang tidak perlu penomoran[@marginnote Ini adalah marginnote yang tak perlu penomoran, perilakunya mirip dengan sidenote.].
Mirip sidenote, di sini juga berlaku aturan penggeseran vertikal.
Untuk marginnote tanpa pergeseran, kita bisa tuliskan `[@marginnote Ini adalah ...]`
| Dalam keluaran Buku ini, diperkenalkan pula bentuk kotak keterangan dengan menggunakan Div berjenis kelas
| `:::{.kaobox title="Implementasi KaoBox"}`.
:::{.kaobox title="Implementasi KaoBox"}
Ini adalah contoh implementasi untuk kaobox.
Kita bisa tampilkan kotak ini sebagai paragraf dengan banyak kalimat.
Kita juga bisa memasukkan beberapa paragraf ke dalam kotak ini.
$$
x^2 + y^2 = r^2
$$
Tidak kalah penting, kita juga bisa memasukkan persamaan matematika.
Meski demikian, akan lebih baik jika kita menggunakan fasilitas lain yang lebih tepat untuk persamaan matematika pada pembahasan tentang Kotak Matematika.
Mengingat bahwa terdapat berbagai jenis deklarasi dalam suatu dokumen matematika, maka layak kiranya deklarasi ini dikhususkan dalam satu jenis kelas tertentu (`.math`).
Di dalam jenis kelas `.math`, kita dapat bagi lagi menjadi beberapa jenis deklarasi, antara lain:
`definition`, `theorem`, `proposition`, `lemma`, `corollary`, `proof`, `example`, `remark`, dan `exercise`.
Salah satu contoh penggunaannya adalah dengan memakai Div seperti `:::{.math .theorem}`.
Berikut adalah berbagai contoh kotak matematika.
:::{.math .definition #ref-math:def1}
\labdef{def1}
Let $(X, d)$ be a metric space. A subset $U \subset X$ is an open set
if, for any $x \in U$ there exists $r > 0$ such that $B(x, r) \subset
U$. We call the topology associated to d the set $\tau\textsubscript{d}$
of all the open subsets of $(X, d).$
:::
Kita dapat merujuk [@math:def1] dengan cara `[@math:def1]`.
Rujukan ini tentu akan kita lakukan di dalam paragraf.
:::{.math .theorem}
A finite intersection of open sets of (X, d) is an open set of (X, d),
i.e $\tau\textsubscript{d}$ is closed under finite intersections. Any
union of open sets of (X, d) is an open set of (X, d).
:::
:::{.math .proposition}
A finite intersection of open sets of (X, d) is an open set of (X, d),
i.e $\tau\textsubscript{d}$ is closed under finite intersections. Any
union of open sets of (X, d) is an open set of (X, d).
[@marginnote You can even insert notes inside the theorem
environments; they will be displayed at the bottom of the box.]
:::
:::{.math .lemma}
A finite intersection\footnote{I'm a footnote} of open sets of (X, d) is
an open set of (X, d), i.e $\tau\textsubscript{d}$ is closed under
finite intersections. Any union of open sets of (X, d) is an open set of
A finite intersection of open sets of (X, d) is an open set of (X, d),
i.e $\tau\textsubscript{d}$ is closed under finite intersections. Any
union of open sets of (X, d) is an open set of (X, d).
:::
:::{.math .proof}
The proof is left to the reader as a trivial exercise. Hint: \blindtext
:::
Jika kita ingin memiliki marginnote dalam bentuk paragraf, maka kita perlu menyimpan marginnote tersebut dalam suatu jenis kelas Div semacam `:::{.marginnote offset=-0.5em}`.
:::{.marginnote}
Here is a random equation, just because we can:
\begin{equation*}
x = a_0 + \cfrac{1}{a_1
+ \cfrac{1}{a_2
+ \cfrac{1}{a_3 + \cfrac{1}{a_4} } } }
\end{equation*}
:::
:::{.math .example}
Let $(X, d)$ be a metric space. A subset $U \subset X$ is an open set
if, for any $x \in U$ there exists $r > 0$ such that $B(x, r) \subset
U$. We call the topology associated to d the set $\tau\textsubscript{d}$
of all the open subsets of $(X, d).$
:::
:::{.math .remark}
Let $(X, d)$ be a metric space. A subset $U \subset X$ is an open set
if, for any $x \in U$ there exists $r > 0$ such that $B(x, r) \subset
U$. We call the topology associated to d the set $\tau\textsubscript{d}$