--- title: "pubsEngine: Program Persiapan Manuskrip" author: - number: 1 id: "1,*" orcid: "0000-0002-0786-7307" name: "Author One" correspond: true affiliation: "My City University" address: "Orenomachi, Orenoshi, Orenoken, Japan" email: "one@myuni.ac.jp" url: "http://thegreatme.org" - number: 2 id: 2 name: "Author Two" affiliation: "My Other City University" address: "Hokanomachi, Orenoshi, Orenoken, Japan" email: "two@myuni.ac.jp" affiliation: - id: 1 description: "My Other City University, Hokanomachi, Orenoshi, Orenoken, Japan" email: "two@myuni.ac.jp" - id: 2 description: "My City University, Orenomachi, Orenoshi, Orenoken, Japan" email: "one@myuni.ac.jp" url: "http://thegreatme.org" - id: "*" description: "corresponding.author@email.example" - id: + description: "these authors contributed equally to this work" keywords: # will use --- as separator - Classical Novae (251) - Ultraviolet astronomy(1736) - History of astronomy(1868) - Interdisciplinary astronomy(804) software: "astropy [@2013A&A...558A..33A,2018AJ....156..123A], Cloudy [@2013RMxAA..49..137F], Source Extractor [@1996A&AS..117..393B]" facilities: "HST(STIS), Swift(XRT and UVOT), AAVSO, CTIO:1.3m, CTIO:1.5m, CXO" --- :::{.abstract} 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. Kami mendorong penulis untuk mendalami fitur-fitur tersebut langsung pada sumber yang telah kami sertakan tautannya dalam dokumen ini[^1]. Jangan lupa, ada batas ukuran teks untuk abstrak, umumnya 250 kata. [^1]: Abstrak ini juga bisa memiliki footnote. ::: # Pendahuluan 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). Pengembangan *open-source* paradigman ini diwakili oleh \latex. `pubsEngine` mengambil peran dalam pendekatan yang kedua, *plain-text*. 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, dsb.), 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. The main motivation for this article is to investigate the stability of the static envelope at the critical mass. With this aim the local, linear stability of static radiative gas spheres is investigated on the basis of Baker's ([@mitchell1980]) standard one-zone model. # Markdown `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. `Markdown` adalah suatu format teks yang mungkin paling sederhana jika dibandingkan dengan format yang populer saat ini, misalnya \latex, HTML, dsb. Umumnya file `Markdown` berakhiran `.md`, misalnya file ini bernama `manuscript.md`. Secara umum, suatu teks `Markdown` dapat kita bagi menjadi: 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, BulletList, Header, 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, Code, Math, RawInline, Link, Image, Note`. Pada bab ini, kami akan sajikan beberapa perintah umum dalam `Markdown` yang menyusun bagian `Inti`. ## Paragraph Bagian paling sederhana dalam `Markdown`. Tidak ada syarat editorial apapun dalam penyusunan suatu paragraf. Satu paragraf akan bermula setelah baris kosong, dan diakhiri oleh baris kosong. ## CodeBlock Paragraf tanpa format, umumnya menggunakan ditampilkan menggunakan bentuk huruf `verbatim`. `CodeBlock` selalu diawali dan diakhiri oleh baris `~~~`. Pada pembukaan `CodeBlock`, kita dapat menyematkan atribut: - penanda jenis (class): `.script` untuk jenis `script` - penanda label: `#fig:new` untuk penanda `fig:new` - variabel: `width=0.5` untuk variabel `width` dengan nilai `5` Contoh di atas akan mengubah awal `CodeBlock` dari `~~~` menjadi `~~~{.script #fig:new width=5}`. Aturan penambahan atribut ini akan menjadi landasan utama dalam berbagai fitur `pubsEngine` yang akan dijelaskan pada bab berikutnya. Berikut adalah contoh dari `CodeBlock`. ``` ~~~ main :: IO () main = putStrLn "we are one" ~~~ ``` Kode di atas akan menghasilkan: ~~~ main :: IO () main = putStrLn "we are one" ~~~ ## RawBlock Suatu paragraf yang terbaca oleh `Pandoc` sebagai blok \latex. Ini berarti, blok ini akan dituliskan apa adanya dalam berkas `.tex` final. Blok ini cukup dinyatakan dengan *environment* \latex dalam bentuk `\begin{xxx}...\end{xxx}`. ## OrderedList Blok ini berisi daftar yang ditera dengan angka berurutan dari 0. Penulisannya cukup dengan membubuhkan angka yang sesuai pada awal baris. Contohnya: ~~~ 1. first in line 2. second 3. and the third ~~~ Akan menghasilkan: 1. first in line 2. second 3. and the third ## BulletList (Unordered List) Blok ini adalah daftar yang ditera dengan penanda selain angka (titik atau lainnya). Penulisannya dengan membubuhkan penanda `-`. Misalnya: ~~~ - first in line - second should multiline - and the third ~~~ akan menghasilkan - first in line - second should multiline - and the third ## Table Pembuatan tabel akan dibahas pada bab selanjutnya mengenai Fitur pubsEngine. ## Header Blok ini adalah blok judul. `Markdown` mengenal hirarki judul, mulai dari tingkat pertama, kedua, dst. Hirarki judul ini ditandai dengan jumlah `#`. Misalnya: `# Judul Untuk Bab (1)` , `## Untuk subbab (1.1)`, dan `### Untuk sub-subbab (1.1.a)`. Penomoran Judul akan berlangsung secara otomatis. Pastikan ada spasi setelah `#`. ## Division Kita dapat mengumpulkan beberapa blok ke dalam satu wadah `Div`. Penanda yang dipakai adalah `:::`. Seperti `CodeBlock`, kita dapat menambahkan berbagai atribut ke dalam blok ini. ## Mathematical Equations By default, we may use `$$` environment for mathematical formula. Nonetheless, actually, we can use any \latex scenario, such as: ~~~ $$ $$ is equal with \begin{equation} \begin{eqnarray} \begin{array} \begin{displaymath} \begin{align} ~~~ This is an example: ~~~ \begin{align} \nabla \cdot \vec{E} &= \rho \nonumber \\ \nabla \cdot \vec{B} &= 0 \nonumber \\ \nabla \times \vec{E} &= -\frac{\vec{B}}{t} \end{align} ~~~ \begin{align} \nabla \cdot \vec{E} &= \rho \nonumber \\ \nabla \cdot \vec{B} &= 0 \nonumber \\ \nabla \times \vec{E} &= -\frac{\vec{B}}{t} \end{align} Equations as independent paragraph equation is not numbered, as below. $$ \nabla \cdot \vec{W} = \sigma W \nonumber $$ And this is another example for inline equation, such as: $$y = 5\cdot x^2$$ You can see that inline equation have automatically numbered. ## Inline Dalam suatu blok, kita dapat menambahkan tata penampilan teks/kata yang sesuai. Perlu diketahui bahwa hal ini akan berakibat pada munculnya perintah-perintah editorial di dalam substansi tulisan. Contohnya: ``` *Emphasis/Italic*, [Underline]{.underline}, **Strong/Bold**, ***Bold dan Italic***, `Code/verbatim`, ~~Strikeout~~, Superscript^2^, Subscript~x~, \emph{RawInline/Latex} $Math \Gamma : x^2+y^2=r^2$, . ``` akan menghasilkan: *Emphasis/Italic*, [Underline]{.underline}, **Strong/Bold**, ***Bold dan Italic***, `Code/verbatim`, ~~Strikeout~~, Superscript^2^, Subscript~x~, \emph{RawInline/Latex}, $Math \Gamma : x^2+y^2=r^2$, . Selain itu, ada beberapa Inline yang lebih kompleks, memunculkan suatu blok khusus pada bagian manuskrip tertentu. Inline tersebut antara lain: ### Link ~~~ We use [Duck Duck Go](https://duckduckgo.com). ~~~ akan menghasilkan: We use [Duck Duck Go](https://duckduckgo.com). Tulisan `Duck Duck Go` tersebut dalam berkas PDF menyimpan alamat website `https://duckduckgo.com` dan berperan sebagai tautan yang dapat diakses. ### Image `Markdown` memungkinkan pemuatan gambar pada [@fig:FigVibStabX] dengan perintah: ~~~ ![Contoh gambar](Figure/icml_numpapers.eps){#fig:FigVibStabX size=0.5} ~~~ ![Contoh gambar](Figure/icml_numpapers.eps){#fig:FigVibStabX size=0.5} Kita dapat menambahkan atribut sesuai dengan aturan yang telah dijelaskan dalam pembahasan `CodeBlock`. 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. Rujukan pada gambar akan dibahas pada bagian berikutnya mengenai Rujukan. ### Note (Catatan kaki) Kita dapat tambahkan suatu catatan kaki dengan perintah `[^1]` atau `[^bignote]`. Kemudian pada paragraf berikutnya, kita tambahkan isi catatan kaki. Berikut adalah contohnya: ~~~ Paragraf ini berisi catatan kaki [^1]. Selain itu, kita gunakan juga catatan kaki yang cukup besar [^bignote]. [^1]: Catatan kaki sederhana [^bignote]: Catatan ini cukup panjang. Mengandung beberapa paragraf. Paragraf yang diawali indentasi mengindikasikan bahwa paragraf tersebut ada di dalam catatan kaki. Ini paragraf catatan kaki yang ketiga. Paragraf ini ada diluar catatan kaki. ~~~ Contoh di atas akan menghasilkan: Paragraf ini berisi catatan kaki [^1]. Selain itu, kita gunakan juga catatan kaki yang cukup besar [^bignote]. [^1]: Catatan kaki sederhana [^bignote]: Catatan ini cukup panjang. Mengandung beberapa paragraf. Paragraf yang diawali indentasi mengindikasikan bahwa paragraf tersebut ada di dalam catatan kaki. Ini paragraf catatan kaki yang ketiga. BUG: catatan kaki multi-paragraf tidak berjalan. Paragraf ini ada diluar catatan kaki. # Fitur Pandoc Ada beberapa fitur tambahan yang dikembangkan sebagai modul/filter `Pandoc`. Fitur tersebut memperkaya fitur dasar yang telah ada dalam `Markdown`. Berbagai fitur ini telah terintegrasi di dalam `pubsEngine`. ## Cite menggunakan `citeproc` Perintah untuk menampilkan rujukan adalah `[@citeTerm]`. Jangan lupa untuk menambahkan `reference-section-title` ke dalam `Meta` pada `manuscript.yaml` untuk menentukan judul halaman rujukan/bibliografi. Beberapa judul yang populer adalah Bibliografi, Daftar Pustaka, dsb. ## Berbagai rujukan menggunakan `crossref` Rujukan internal (dalam dokumen) terhadap gambar, tabel dan segala sesuatu yang telah diberi label dapat dilakukan dengan pola yang mirip. Sebagai contoh, rujukan pada Gambar [@fig:FigVibStabX] dinyatakan dengan `[@fig:FigVibStabX]`. Untuk konsistensi, kita gunakan awalan `tbl:` untuk tabel, dan `sec:` untuk bab atau sub-bab. Pengungkapan rujukan (misalnya fig. 1) dapat diubah dalam `pandoc-crossref.yaml` pada variabel `figPrefix`. Berbagai pengaturan dalam `crossref` dapat diperiksa pada halaman [panduan utama](https://lierdakil.github.io/pandoc-crossref/). # Fitur yang disediakan pubsEngine Berbagai fitur tambahan yang disediakan oleh `pubsEngine` merentang pada beberapa aspek yang terkait dengan pemrosesan di luar sistem. Sebagian besar fitur tersebut ditampilkan sebagai `CodeBlock` dengan jenis kelas tertentu. ## Table Fitur ini merupakan peningkatan dari fitur dasar yang telah ada dalam spesifikasi dasar `Markdown` dari `Pandoc`. `pubsEngine` memasukkan kapabilitas `MultiMarkdown` untuk memproses tabel ini. Kita dapat membuat [@tbl:multi] dengan menggunakan: ``` ~~~{.multiTable #tbl:multi} | | Grouping || |First Header | Second Header | Third Header | | ------------ | :-----------: | -----------: | |Content | *Long Cell* || |Content | **Cell** | Cell | |New section | More | Data | |And more | With an escaped '\|' || [More complicated table caption.] ~~~ ``` ~~~{.multiTable #tbl:multi} | | Grouping || |First Header | Second Header | Third Header | | ------------ | :-----------: | -----------: | |Content | *Long Cell* || |Content | **Cell** | Cell | |New section | More | Data | |And more | With an escaped '\|' || [More complicated table can be done using MultiMarkdown in `.multiTable` CodeBlock. You have to use this format for all table as default.] ~~~ Untuk saat ini, tabel yang merentang seluruh lebar halaman dalam tatanan dikolom harus dibuat dengan menggunakan perintah \latex. Detil perintah ini akan disampaikan dalam Lampiran. ## Memasukkan berkas .md tambahan Untuk memudahkan penataan dokumen, kita dapat membagi dokumen `.md` utama menjadi beberapa berkas, dan menggabungkannya dengan menggunakan `include`. Akhiran berkas `.md` harus dihilangkan sebab akan secara otomatis ditambahkan oleh `pubsEngine`. ``` ~~~include include/addition1 ~~~ atau untuk satu berkas: [@include:include/addition1] ``` ~~~include include/addition1 ~~~ [@include:include/addition1] Kedua paragraf identik di atas dimasukkan secara otomatis dari berkas `include/addition1.md`. ## Transliterasi bahasa Arab 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`, _hamzah_ di bawah kursi alif `.nu "i`, _hamzah_ pada kursi ya dan wau `.nu "w / "y`, dan _hamzah_ _washol_ `.nu _a / ~a`. Untuk menuliskan text arab, kita dapat memilih salah satu dari dua cara. Cara pertama adalah sebagai *inline* dalam teks/paragraf. Dalam skenario ini, kita menggunakan jenis kelas `[.nu]` sebagaimana dalam `[.nu rabbi fa-_infanaa bibarkatihim]` yang akan menghasilkan `.nu rabbi fa-_infanaa bibarkatihim`. Cara berikutnya adalah dengan jenis kelas `~~~nusantara` dalam contoh sebagai berikut: ``` ~~~nusantara al-_hamdu liLLAHi al-waa_hidi fiY dzaatihi wa shifaatihi al-ladziY ba`atsa sayyidinaa MUHAMMADaN lil-khalqi bil-tau_hiidi bibaahiri aaayaatihi, wa SWS `alaY `aruusi al-rusli [[3]] wa sayyidi kulli man laka `alayhi sayaada:ti wa `alaY aaalihi wa sha_hbihi wa al-taabi`iina lahum fiY al-_husnaY wa ziyaada:ti. ((waba`du)) ~~~ ``` ~~~nusantara al-_hamdu liLLAHi al-waa_hidi fiY dzaatihi wa shifaatihi al-ladziY ba`atsa sayyidinaa MUHAMMADaN lil-khalqi bil-tau_hiidi bibaahiri aaayaatihi, wa SWS `alaY `aruusi al-rusli [[3]] wa sayyidi kulli man laka `alayhi sayaada:ti wa `alaY aaalihi wa sha_hbihi wa al-taabi`iina lahum fiY al-_husnaY wa ziyaada:ti. ((waba`du)) ~~~ ## Diagrams Skrip program `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]`. Implementasi fitur ini dapat dilihat pada [@fig:dia1]. Perlu diperhatikan pula bahwa dalam hal ini, aturan ukuran `size` tetap sesuai dengan aturan dalam gambar biasa. ``` ~~~{#fig:dia1 .diagram size=0.4 caption="dari Diagrams"} let x = circle 10 in x ~~~ ``` ~~~{#fig:dia1 .diagram size=0.4 caption="dari Diagrams"} let t = circle 10 in t ~~~ ## Menjalankan perintah eksternal ~~Saat ini, perintah eksternal yang dikenali hanya Python~~. 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 `_build/temp/lib` dan dapat diakses oleh seluruh blok program terkait dalam bahasa tersebut di seluruh dokumen. Berikut adalah contoh dari blok library: ``` ~~~{.script .py .lib #fig:py} #!/usr/bin/env python3 print("this is new block") ~~~ ``` Dalam keadaan biasa, `CodeBlock` ini tidak akan muncul dalam dokumen PDF atau \latex yang dihasilkan. Kita dapat memilih untuk menampilkan satu baris deskripsi singkat bagi library ini dengan menambahkan variabel `description`. Jika variabel ini tiada, maka blok ini akan dianggap sebagai *hidden-library*. Blok ini akan tetap dapat diakses dari seluruh script, tapi tidak ada indikasi yang menunjukkan adanya library ini dalam dokumen PDF yang dihasilkan. Perlakuan yang lebih lengkap dapat dilakukan dengan menambahkan jenis kelas `.show`. More verbose treatment can be done by adding `.show` class indicator. With this indication, the script will be shown as a CodeBlock, and followed by the description. The following CodeBlock was produced using the headings of `~~~{.script .py .lib .show file="libPy1"}`. ~~~{.script .py .lib .show file="libPy1"} import subprocess def sysrun(t,debug:bool=False): s = " ".join(t) res = subprocess.getoutput(s) if(debug): print(s) print(res) return res description="This is the description of the additional `libPy1` library that will be inserted into the pdf output. 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." ~~~ The class command `.md` will output a text document that translated to a markdown by pubsEngine. In this scenario, the script should output a valid markdown document to the stdout. We are expecting the usage of `.md` to produce some sort of table, or a dynamic paragraph. ``` ~~~{.script .py .md caption="this is a table script"} print(""" ~~~{.multiTable #tbl:py} | as | dd | |----|----| | dd | dd | [Table: this is output of a python script] ~~~ """) ~~~ ``` The above snippet would give us output at [@tbl:py]. We can also use great package of `tabulate` from python. It can tabulate shell output by `tabulate -F ".3f" -f orgtable`. Of course, we are required to put our own headers. ~~~{.script .py .md caption="this is a table script"} print('~~~{.multiTable #tbl:py notes=[@var:v2]}') print(""" | as | dd | |----|----| | dd | dd | [This is output of a python script] """) print("~~~") ~~~ On the otherhand, `.img` will produce an image in the document. This scenario expects the script will run an IO and must create an image file inside directory `_build/auto` by the filename designated by `file`. This responsibility is purely on the shoulder of the author. The image at Figure \ref{fig:py} can be produced using: ``` ~~~{.script .py .img #fig:py caption="this is a new image from script" width=400 height=300 file=pyImage} #import subprocess #subprocess.getoutput("wget 'https://upload.wikimedia.org/wikipedia/commons /thumb/2/2c/Bismillah.svg/640px-Bismillah.svg.png' -O _build/auto/pyImage.png") # we can call a function from included library above sysrun(["wget 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c /Bismillah.svg/640px-Bismillah.svg.png' -O _build/auto/pyImage.png"]) ~~~ ``` ~~~{.script .py .img #fig:py caption="this is a new image from python script" width=400 height=300 file=pyImage} sysrun(["wget 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Bismillah.svg/640px-Bismillah.svg.png' -O _build/auto/pyImage.png"]) ~~~ Instead of writing it into the body of the CodeBlock, we can put the script in another file, call it in the main manuscript and put the caption as the CodeBlock text. The implementation of this mechanism is shown in Figure \ref{fig:pySrc}. ``` ~~~{.script .py .img #fig:pySrc size=0.6 src=script/pyScript1.py file=pyImageS} This image came from pyScript1.py that called using `src`. ~~~ ``` ~~~{.script .py .img #fig:pySrc size=0.6 src=script/pyScript1.py file=pyImageS} This image came from pyScript1.py that called using `src`. ~~~ The same rules apply to `.img .md .lib` of SHELL (`.sh`). Under the hood, pubsEngine will run the script under `zsh`. The library will be saved in `_build/temp/lib/sh`. The picture at Figure \ref{fig:shImage} came from `.sh` script. ~~~{.script .sh .img #fig:shImage caption="image from SHELL script (zsh)" width=400 height=300 file=shImage} wget "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Bismillah_Calligraphy_37.svg/1200px-Bismillah_Calligraphy_37.svg.png" -O _build/auto/shImage.png ~~~ pubsEngine also implemented this mechanism on GNUplot scripts using `.gnuplot` class. ## Mermaid diagrams Please make sure that Mermaid executables have already installed in `$PATH`. pubsEngine need to call executable named `mermaid`. Common ways to install Mermaid is: ~~~ npm install @mermaid-js/mermaid-cli ln -sf ~/node_modules/.bin/mmdc ~/.local/bin/mermaid ~~~ Inclusion of [Mermaid](https://github.com/hasanalrasyid/pandoc-mermaid) diagrams at Figure \ref{fig:mermaid} can be done by the following syntax: ``` ~~~{.mermaid #fig:mermaid caption="new mermaid" file=mermaidExample size=0.6} sequenceDiagram participant Alice participant Bob Alice->John: Hello John, how are you? loop Healthcheck John->John: Fight against hypochondria end Note right of John: Rational thoughts
prevail... John-->Alice: Great! John->Bob: How about you? Bob-->John: Jolly good! ~~~ ``` Please be sure that the size is a relative size compared with `\linewidth`. The size will always be in a constant aspect ratio of `800x600`. ~~~{.mermaid #fig:mermaid caption="new mermaid" file="mermaidExample" size=0.6} sequenceDiagram participant Alice participant Bob Alice->John: Hello John, how are you? loop Health-check John->John: Fight against hypochondria end Note right of John: Rational thoughts
prevail... John-->Alice: Great! John->Bob: How about you? Bob-->John: Jolly good! ~~~ ## GoJS Diagrams For more flexibility, you may include a diagram script based on [GoJS](https://gojs.net/latest/samples/). This feature enable us to create a very complex diagrams. The merit of this input is comparable with the inclusion of Haskell's `Diagrams`, with lower learning curve for those who already have some familiarity with imperative language, especially `javaScript` (`node.js`). Figure \ref{fig:goJS} shows the output of `GoJS` diagrams provided by following code. ``` ~~~{.gojs .show #fig:goJS size=0.9 src=script/goJSmodel.js file=goJSImage} This is GoJS image text that would be shown as a caption. ~~~ ``` ~~~{.gojs .show #fig:goJS size=0.9 src=script/goJSmodel.js file=goJSImage} This is GoJS image text that would be shown as a caption. ~~~ Please be aware of some requirements to create this model. Under the hood, pubsEngine loads puppeteer and pdfkit. GoJS is provided by the module object `go`. The variable `$` represents `go.GraphObject.make`. Diagram name should be named as `myDiagram`. By the end of the process, pubsEngine will only compile diagram that represented by `myDiagram`. If the diagram happens to be very complex and composed of several diagrams, please be aware that all diagrams should be under `myDiagram`. ## Subprocess delegation ~~~{.delegate .multimarkdown #tbl:delegate} | | Grouping || |First Header | Second Header | Third Header | | ------------ | :-----------: | -----------: | |Content | *Long Cell* || |Content | **Cell** | Cell | | |New section | More | Data | |And more | With an escaped '\|' || [Prototype table] ~~~ We can delegate the compilation of our CodeBlock to other application. As an example, the creation of table \ref{tbl:delegate}, can be delegated to `multimarkdown` using following syntax. Please notice the use of `#tbl:delegate` for assignment of label that can be refered in the text using `\ref{tbl:delegate}`. ``` ~~~{.delegate .multimarkdown #tbl:delegate} | | Grouping || |First Header | Second Header | Third Header | | ------------ | :-----------: | -----------: | |Content | *Long Cell* || |Content | **Cell** | Cell | | |New section | More | Data | |And more | With an escaped '\|' || [Prototype table] ~~~ ``` ## Feynman diagram Feynman diagram is based on \latex package [`FeynMP`](https://ctan.org/pkg/feynmf?lang=en). Please refer to the documentation of said package for the details of the syntax. Under the hood, the `FeynMP` syntax will be transcribed under the `\begin{math}...\end{math}` environment in resulted \latex document. Feynman diagram at Figure [@fig:feynMP] can be generated using the following syntax. ``` ~~~{.feynmp caption="test feynman diagram"} \begin{gathered} \begin{fmfgraph*}(65,50) %size 65,50 \fmfleft{i1,i2} \fmfright{o1,o2} \fmf{fermion}{i1,v1,o1} \fmf{fermion}{i2,v2,o2} \fmf{photon}{v1,v2} \end{fmfgraph*} \end{gathered}=-i\lambda ~~~ ``` ~~~{.feynmp caption="test feynman diagram" #fig:feynMP} \begin{gathered} \begin{fmfgraph*}(65,50) %size 65,50 \fmfleft{i1,i2} \fmfright{o1,o2} \fmf{fermion}{i1,v1,o1} \fmf{fermion}{i2,v2,o2} \fmf{photon}{v1,v2} \end{fmfgraph*} \end{gathered}=-i\lambda ~~~ ## Connected bibliography with Zotero The connection with Zotero can be established by [`Better BibTeX`](https://retorque.re/zotero-better-bibtex) addon for Zotero. After installation of this addon to Zotero, pubsEngine can dump the bibliography for collection that mentioned at the yaml option `bibzotero`. pubsEngine will pick that collection from the first group (usually refered as `My Library`). Zotero standalone application needs to be started when pubsEngine called. Eventually, pubsEngine will save the necessary `.bib` file under `_build` directory. The regular \latex will be proceeds after this step. ## Variable blocks pubsEngine can identify a text as variable by abusing div with class `.var .variableName` and citeproc notation of `[@var:variableName]`. :::{.var .v2} *This text V2 segment can be inserted in any part of the other text.* ::: ~~~ :::{.var .v1} *This text segment can be inserted in any part of the other text.* ::: ~~~ :::{.var .v1} *This text segment can be inserted in any part of the other text.* ::: We can try to insert the segment. [@var:v1] And this part is outside the inserted text. ## Special Div Blocks of Acknowledgements, Software, Facilities and Appendix These block classes can be optionally shown or not (with hidden as a default). Div block with class `:::{.acknowledgements .show}` will be shown right at place. If `.show` is omitted, their placement will follows the template location. ## Presentation and Poster (Beamer) There are two CodeBlocks that can be used for beamer. For a TextBlock, we can use `~~~{.textblock w=150pt pos=(140pt,160pt)}`. We can include notes for beamer by `~~~{note}` CodeBlocks. # Baker's standard one-zone model \begin{figure*} \centering \includegraphics{Figure/icml_numpapers.eps} \caption{Adiabatic exponent $\Gamma_1$. $\Gamma_1$ is plotted as a function of $\lg$ internal energy $\mathrm{[erg\,g^{-1}]}$ and $\lg$ density $\mathrm{[g\,cm^{-3}]}$.} \label{fig:FigGam}% \end{figure*} In this section the one-zone model of [@DudaHart2nd], originally used to study the Cephe\text{\"{\i}}d pulsation mechanism, will be briefly reviewed. The resulting stability criteria will be rewritten in terms of local state variables, local timescales and constitutive relations. [@DudaHart2nd] investigates the stability of thin layers in self-gravitating, spherical gas clouds with the following properties: ~~~ * hydrostatic equilibrium, * thermal equilibrium, * energy transport by grey radiation diffusion. ~~~ non-numbered list can be written as above, and shown as: * hydrostatic equilibrium, * thermal equilibrium, * energy transport by grey radiation diffusion. For the one-zone-model Baker obtains necessary conditions for dynamical, secular and vibrational (or pulsational) stability (Eqs. (34a,b,c) in Baker [@DudaHart2nd]). Using Baker's notation: \noindent and with the definitions of the *local cooling time* (see == [@fig:FigGam] == Fig. \ref{fig:FigGam}) \begin{equation} \tau_{\mathrm{co}} = \frac{E_{\mathrm{th}}}{L_{r0}} \,, \end{equation} and the *local free-fall time* \begin{equation} \tau_{\mathrm{ff}} = \sqrt{ \frac{3 \pi}{32 G} \frac{4\pi r_0^3}{3 M_{\mathrm{r}}} }\,, \end{equation} Baker's $K$ and $\sigma_0$ have the following form: \begin{eqnarray} \sigma_0 & = & \frac{\pi}{\sqrt{8}} \frac{1}{ \tau_{\mathrm{ff}}} \\ K & = & \frac{\sqrt{32}}{\pi} \frac{1}{\delta} \frac{ \tau_{\mathrm{ff}} } { \tau_{\mathrm{co}} }\,; \end{eqnarray} where $E_{\mathrm{th}} \approx m (P_0/{\rho_0})$ has been used and \begin{equation} \begin{array}{l} \delta = - \left( \frac{ \partial \ln \rho }{ \partial \ln T } \right)_P \\ e=mc^2 \end{array} \end{equation} is a thermodynamical quantity which is of order $1$ and equal to $1$ for nonreacting mixtures of classical perfect gases. The physical meaning of $\sigma_0$ and $K$ is clearly visible in the equations above. $\sigma_0$ represents a frequency of the order one per free-fall time. $K$ is proportional to the ratio of the free-fall time and the cooling time. Substituting into Baker's criteria, using thermodynamic identities and definitions of thermodynamic quantities, \begin{displaymath} \Gamma_1 = \left( \frac{ \partial \ln P}{ \partial\ln \rho} \right)_{S} \, , \; \chi^{}_\rho = \left( \frac{ \partial \ln P}{ \partial\ln \rho} \right)_{T} \, , \; \kappa^{}_{P} = \left( \frac{ \partial \ln \kappa}{ \partial\ln P} \right)_{T} \end{displaymath} \begin{displaymath} \nabla_{\mathrm{ad}} = \left( \frac{ \partial \ln T} { \partial\ln P} \right)_{S} \, , \; \chi^{}_T = \left( \frac{ \partial \ln P} { \partial\ln T} \right)_{\rho} \, , \; \kappa^{}_{T} = \left( \frac{ \partial \ln \kappa} { \partial\ln T} \right)_{T} \end{displaymath} one obtains, after some pages of algebra, the conditions for *stability* given below: \begin{eqnarray} \frac{\pi^2}{8} \frac{1}{\tau_{\mathrm{ff}}^2} ( 3 \Gamma_1 - 4 ) & > & 0 \label{ZSDynSta} \\ \frac{\pi^2}{\tau_{\mathrm{co}} \tau_{\mathrm{ff}}^2} \Gamma_1 \nabla_{\mathrm{ad}} \left[ \frac{ 1- 3/4 \chi^{}_\rho }{ \chi^{}_T } ( \kappa^{}_T - 4 ) + \kappa^{}_P + 1 \right] & > & 0 \label{ZSSecSta} \\ \frac{\pi^2}{4} \frac{3}{\tau_{ \mathrm{co} } \tau_{ \mathrm{ff} }^2 } \Gamma_1^2 \, \nabla_{\mathrm{ad}} \left[ 4 \nabla_{\mathrm{ad}} - ( \nabla_{\mathrm{ad}} \kappa^{}_T + \kappa^{}_P ) - \frac{4}{3 \Gamma_1} \right] & > & 0 \label{ZSVibSta} \end{eqnarray} For a physical discussion of the stability criteria see [@DudaHart2nd] or [@anonymous]. We observe that these criteria for dynamical, secular and vibrational stability, respectively, can be factorized into 1. a factor containing local timescales only, 2. a factor containing only constitutive relations and their derivatives. 3. To make a numered list, make sure that: 1. it stands on its own paragraph (blank line above and below the list), 2. the number starts at first column on each line. The first factors, depending on only timescales, are positive by definition. The signs of the left hand sides of the inequalities (\ref{ZSDynSta}), (\ref{ZSSecSta}) and (\ref{ZSVibSta}) therefore depend exclusively on the second factors containing the constitutive relations. Since they depend only on state variables, the stability criteria themselves are *functions of the thermodynamic state in the local zone*. The one-zone stability can therefore be determined from a simple equation of state, given for example, as a function of density and temperature. Once the microphysics, i.e. the thermodynamics and opacities (see Table \ref{KapSou}), are specified (in practice by specifying a chemical composition) the one-zone stability can be inferred if the thermodynamic state is specified. The zone -- or in other words the layer -- will be stable or unstable in whatever object it is imbedded as long as it satisfies the one-zone-model assumptions. Only the specific growth rates (depending upon the time scales) will be different for layers in different objects. We will now write down the sign (and therefore stability) determining parts of the left-hand sides of the inequalities (\ref{ZSDynSta}), (\ref{ZSSecSta}) and (\ref{ZSVibSta}) and thereby obtain *stability equations of state*. The sign determining part of inequality (\ref{ZSDynSta}) is $3\Gamma_1 - 4$ and it reduces to the criterion for dynamical stability \begin{equation} \Gamma_1 > \frac{4}{3}\,\cdot \end{equation} Stability of the thermodynamical equilibrium demands \begin{equation} \chi^{}_\rho > 0, \;\; c_v > 0\, , \end{equation} and \begin{equation} \chi^{}_T > 0 \end{equation} holds for a wide range of physical situations. With \begin{eqnarray} \Gamma_3 - 1 = \frac{P}{\rho T} \frac{\chi^{}_T}{c_v}&>&0\\ \Gamma_1 = \chi_\rho^{} + \chi_T^{} (\Gamma_3 -1)&>&0\\ \nabla_{\mathrm{ad}} = \frac{\Gamma_3 - 1}{\Gamma_1} &>&0 \end{eqnarray} we find the sign determining terms in inequalities (\ref{ZSSecSta}) and (\ref{ZSVibSta}) respectively and obtain the following form of the criteria for dynamical, secular and vibrational *stability*, respectively: \begin{eqnarray} 3 \Gamma_1 - 4 =: S_{\mathrm{dyn}} > & 0 & \label{DynSta} \\ \frac{ 1- 3/4 \chi^{}_\rho }{ \chi^{}_T } ( \kappa^{}_T - 4 ) + \kappa^{}_P + 1 =: S_{\mathrm{sec}} > & 0 & \label{SecSta} \\ 4 \nabla_{\mathrm{ad}} - (\nabla_{\mathrm{ad}} \kappa^{}_T + \kappa^{}_P) - \frac{4}{3 \Gamma_1} =: S_{\mathrm{vib}} > & 0\,.& \label{VibSta} \end{eqnarray} The constitutive relations are to be evaluated for the unperturbed thermodynamic state (say $(\rho_0, T_0)$) of the zone. We see that the one-zone stability of the layer depends only on the constitutive relations $\Gamma_1$, $\nabla_{\mathrm{ad}}$, $\chi_T^{},\,\chi_\rho^{}$, $\kappa_P^{},\,\kappa_T^{}$. These depend only on the unperturbed thermodynamical state of the layer. Therefore the above relations define the one-zone-stability equations of state $S_{\mathrm{dyn}},\,S_{\mathrm{sec}}$ and $S_{\mathrm{vib}}$. See == [@fig:FigVibStab] == Fig. \ref{fig:FigVibStab} for a picture of $S_{\mathrm{vib}}$. Regions of secular instability are listed in Table 1. ![Vibrational stability equation of state $S_{\mathrm{vib}}(\lg e, \lg \rho)$. $>0$ means vibrational stability.](Figure/icml_numpapers.eps){#fig:FigVibStab2 width=3.43in height=2.71in} # Conclusions 1. The conditions for the stability of static, radiative layers in gas spheres, as described by Baker's ([@DudaHart2nd]) standard one-zone model, can be expressed as stability equations of state. These stability equations of state depend only on the local thermodynamic state of the layer. 2. If the constitutive relations -- equations of state and Rosseland mean opacities -- are specified, the stability equations of state can be evaluated without specifying properties of the layer. 3. For solar composition gas the $\kappa$-mechanism is working in the regions of the ice and dust features in the opacities, the $\mathrm{H}_2$ dissociation and the combined H, first He ionization zone, as indicated by vibrational instability. These regions of instability are much larger in extent and degree of instability than the second He ionization zone that drives the Cephe\text{\"\i}d pulsations. # Introduction \latex \footnote{\url{http://www.latex-project.org/}} is a document markup language that is particularly well suited for the publication of mathematical and scientific articles [@lamport94]. \latex was written in 1985 by Leslie Lamport who based it on the \TeX typesetting language which itself was created by Donald E. Knuth in 1978. In 1988 a suite of \latex macros were developed to investigate electronic submission and publication of AAS Journal articles [@1989BAAS...21..780H]. Shortly afterwards, Chris Biemesdefer merged these macros and more into a \latex\ 2.08 style file called \aastex. These early \aastex versions introduced many common commands and practices that authors take for granted today. Substantial revisions were made by Lee Brotzman and Pierre Landau when the package was updated to v4.0. AASTeX v5.0, written in 1995 by Arthur Ogawa, upgraded to \latex 2e which uses the document class in lieu of a style file. Other improvements to version 5 included hypertext support, landscape deluxetables and improved figure support to facilitate electronic submission. \aastex v5.2 was released in 2005 and introduced additional graphics support plus new mark up to identifier astronomical objects, datasets and facilities. In 1996 Maxim Markevitch modified the AAS preprint style file, aaspp4.sty, to closely emulate the very tight, two column style of a typeset Astrophysical Journal article. The result was emulateapj.sty. A year later Alexey Vikhlinin took over development and maintenance. In 2001 he converted emulateapj into a class file in \latex 2e and in 2003 Vikhlinin completely rewrote emulateapj based on the APS Journal's RevTEX class. During this time emulateapj gained growing acceptance in the astronomical community as it filled an author need to obtain an approximate number of manuscript pages prior to submission for cost and length estimates. The tighter typeset also had the added advantage of saving paper when printing out hard copies. Even though author publication charges are no longer based on print pages \footnote{see Section \ref{sec:pubcharge} in the Appendix for more details about how current article costs are calculated.} the emulateapj class file has proven to be extremely popular with AAS Journal authors. An analysis of submitted \latex manuscripts in 2015 revealed that sim65 either called emulateapj or have a commented emulateapj classfile call indicating it was used at some stage of the manuscript construction. Clearly authors want to have access to a tightly typeset version of the article when corresponding with co-authors and for preprint submissions. When planning the next \aastex release the popularity of emulateapj played an important roll in the decision to drop the old base code and adopt and modify emulateapj for \aastex v6.+ instead. The change brings \aastex\ inline with what the majority of authors are already using while still delivering new and improved features. \aastex v6.0 through v6.31 were written by Amy Hendrickson. The release dates were January 2016 (v6.0), October 2016 (v6.1), January 2018 (v6.2), June 2019 (v6.3), and March 2010 (v6.31) respectively. The new features in the recent releases includes: \begin{itemize} \item{v6.0} \begin{enumerate} \item line numbering and watermarking, \item improved citations for third party data repositories and software, \item easier construction of matrix figures consisting of multiple encapsulated postscript (EPS) or portable document format (PDF) files, \item figure set mark up for large collections of similar figures, \item color mark up to easily enable/disable revised text highlighting, \item improved url support, and \item numerous table options such as the ability to hide columns, column decimal alignment, automatic column math mode and numbering, plus splitting of wide tables (see Section \ref{subsec:tables} for details). \end{enumerate} \item{v6.1} \begin{enumerate} \item ORCID support for preprints, \item improved author, affiliation and collaboration mark up, \item new typeset style options including ` modern`. \end{enumerate} \item{v6.2} \begin{enumerate} \item A new RNAAS style option for Research Note manuscripts, \item Titles no longer put in all caps, \item No page skip between the title page and article body, \item re-introduce RevTeX's widetext environment for long lines in two column style formats, and \end{enumerate} \item{v6.3} \begin{enumerate} \item New ` interactive` environment to highlight interactive figures (see Section \ref{animation}), \item Improved collaboration commands, \item New ` anonymous` style to keep the authors, affiliations and acknowledgments from showing in the compiled pdf for dual anonymous review, and \item Adoptions of IAU approved syntax for nominal units, see Section \ref{nominal}. \end{enumerate} \item{v6.31} \begin{enumerate} \item Fixes a bug in the ` anonymous` style for dual anonymous review. \item Improves line numbering with the ` linenumbers` style around equations due to the amsmath and lineno package compatibility issues. \item Depreciate the ` \\acknowledgment` command in favor of the ` acknowledgment` environment. \end{enumerate} \end{itemize} The rest of this article provides information and examples on how to create your own AAS Journal manuscript with v6.31. Special emphasis is placed on how to use the full potential of \aastex v6+. The next section describes the different manuscript styles available and how they differ from past releases. Section \ref{sec:floats} describes table and figure placement. Specific examples of tables, Section \ref{subsec:tables}, and figures, Section \ref{subsec:figures}, are also provided. A special emphasis is placed on interactive figures. Section \ref{sec:displaymath} discusses how to display math and incorporate equations in a manuscript while Section \ref{sec:highlight} discuss how to use different ways to highlight revisions. The last section, \ref{sec:cite}, shows how recognize software and external data as first class references in the manuscript bibliography. An appendix is included for additional information readers might find useful. More documentation is embedded in the comments of this \latex file and in the online documentation at \url{http://journals.aas.org/authors/aastex.html}. # Manuscript styles The default style in \aastex v6.31 is a tight single column style, e.g. 10 point font, single spaced. The single column style is very useful for article with wide equations. It is also the easiest to style to work with since figures and tables, see Section \ref{sec:floats}, will span the entire page, reducing the need for address float sizing. To invoke a two column style similar to the what is produced in the published PDF copy use ~~~ \documentclass[twocolumn]{aastex631} ~~~ Note that in the two column style figures and tables will only span one column unless specifically ordered across both with the ``*`` flag, e.g. ~~~ \begin{figure*} ... \end{figure*}, \begin{table*} ... \end{table*}, \begin{deluxetable*} ... \end{deluxetable*}. ~~~ This option is ignored in the onecolumn style. Some other style options are outlined in the commented sections of this article. Any combination of style options can be used. Two style options that are needed to fully use the new revision tracking feature, see Section \ref{sec:highlight}, are `linenumbers` which uses the lineno style file to number each article line in the left margin and `trackchanges` which controls the revision and commenting highlight output. There is also a new ` modern` option that uses a Daniel Foreman-Mackey and David Hogg design to produce stylish, single column output that has wider left and right margins. It is designed to have fewer words per line to improve reader retention. It also looks better on devices with smaller displays such as smart phones. The ` anonymous` option will prevent the author and affiliations from being shown in the compiled pdf copy. This option allows the author to keep this critical information in the latex file but prevent the reviewer from seeing it during peer review if dual anonymous review (DAR) is requested. Likewise, acknowledgments can also be hidden if placed in the new `\begin{acknowledgments} ... \end{acknowledgments` environment. The use of this option is highly recommended for PSJ submissions. Advice for anonymizing your manuscript for DAR is provided at \url{https://journals.aas.org/manuscript-preparation/#dar}. # Floats Floats are non-text items that generally can not be split over a page. They also have captions and can be numbered for reference. Primarily these are figures and tables but authors can define their own. \latex tries to place a float where indicated in the manuscript but will move it later if there is not enough room at that location, hence the term ``float``. Authors are encouraged to embed their tables and figures within the text as they are mentioned. Please do not place the figures and text at the end of the article as was the old practice. Editors and the vast majority of referees find it much easier to read a manuscript with embedded figures and tables. Depending on the number of floats and the particular amount of text and equations present in a manuscript the ultimate location of any specific float can be hard to predict prior to compilation. It is recommended that authors textbf{not} spend significant time trying to get float placement perfect for peer review. The AAS Journal's publisher has sophisticated typesetting software that will produce the optimal layout during production. Note that authors of Research Notes are only allowed one float, either one table or one figure. For authors that do want to take the time to optimize the locations of their floats there are some techniques that can be used. The simplest solution is to placing a float earlier in the text to get the position right but this option will break down if the manuscript is altered. A better method is to force \latex to place a float in a general area with the use of the optional `[placement specifier]` parameter for figures and tables. This parameter goes after ` \begin{figure}`, ` \begin{table}`, and ` \begin{deluxetable}`. The main arguments the specifier takes are ``h``, ``t``, ``b``, and ``!``. These tell \latex to place the float \underline{h}ere (or as close as possible to this location as possible), at the \underline{t}op of the page, and at the \underline{b}ottom of the page. The last argument, `!`, tells \latex to override its internal method of calculating the float position. A sequence of rules can be created by using multiple arguments. For example, ` \begin{figure[htb!]}` tells \latex to try the current location first, then the top of the page and finally the bottom of the page without regard to what it thinks the proper position should be. Many of the tables and figures in this article use a placement specifier to set their positions. Note that the \latex ` tabular` environment is not a float. Only when a ` tabular` is surrounded by `\begin{table} ...\end{table}` is it a true float and the rules and suggestions above apply. In AASTeX v6.31 all deluxetables are float tables and thus if they are longer than a page will spill off the bottom. Long deluxetables should begin with the `\startlongtable` command. This initiates a longtable environment. Authors might have to use `\clearpage` to isolate a long table or optimally place it within the surrounding text. ## Tables Tables can be constructed with \latex's standard table environment or the \aastex's deluxetable environment. The deluxetable construct handles long tables better but has a larger overhead due to the greater amount of defined mark up used set up and manipulate the table structure. The choice of which to use is up to the author. Examples of both environments are used in this manuscript. Tables longer than 200 data lines and complex tables should only have a short example table with the full data set available in the machine readable format. The machine readable table will be available in the HTML version of the article with just a short example in the PDF. Authors are required to indicate in the table comments that the data in machine readable format in the full article. Authors are encouraged to create their own machine readable tables using the online tool at \url{http://authortools.aas.org/MRT/upload.html}. \aastex v6 introduced five new table features that were designed to make table construction easier and the resulting display better for AAS Journal authors. The items are: 1. Declaring math mode in specific columns, 2. Column decimal alignment, 3. Automatic column header numbering, 4. Hiding columns, and 5. Splitting wide tables into two or three parts. Full details on how to create each type are given in the following sections. Additional details are available in the AASTeX guidelines at \url{http://journals.aas.org/authors/aastex.html} ### Column math mode Both the \latex tabular and \aastex deluxetable require an argument to define the alignment and number of columns. The most common values are ``c``, ``l`` and ``r`` for \underline{c}enter, \underline{l}eft, and \underline{r}ight justification. If these values are capitalized, e.g. ``C``, ``L``, or ``R``, then that specific column will automatically be in math mode meaning that \$s are not required. Note that having embedded dollar signs in the table does not affect the output. ### Decimal alignment Aligning a column by the decimal point can be difficult with only center, left, and right justification options. It is possible to use phantom calls in the data, e.g. `\phn`, to align columns by hand but this can be tedious in long or complex tables. To address this \aastex introduces the `\decimals` command and a new column justification option, `D`, to align data in that column on the decimal. In deluxetable the `\decimals` command is invoked before the `\startdata` call but can be anywhere in \latex's tabular environment. Two other important thing to note when using decimal alignment is that each decimal column \textit{must end with a space before the ampersand}, e.g. ``&&`` is not allowed. Empty decimal columns are indicated with a decimal, e.g. ``.``. Do not use deluxetable's `\nodata` command. The ``D`` alignment token works by splitting the column into two parts on the decimal. While this is invisible to the user one must be aware of how it works so that the headers are accounted for correctly. All decimal column headers need to span two columns to get the alignment correct. This can be done with a multicolumn call, e.g `\multicolumn2c{}` or `\multicolumn{2}{c}{}`, or use the new `\twocolhead{}` command in deluxetable. Since \latex is splitting these columns into two it is important to get the table width right so that they appear joined on the page. You may have to run the \latex compiler twice to get it right. ### Automatic column header numbering The command `\colnumbers` can be included to automatically number each column as the last row in the header. Per the AAS Journal table format standards, each column index numbers will be surrounded by parentheses. In a \latex tabular environment the `\colnumbers` should be invoked at the location where the author wants the numbers to appear, e.g. after the last line of specified table header rows. In deluxetable this command has to come before `\startdata`. `\colnumbers` will not increment for columns hidden by the ``h`` command, see Section \ref{subsubsec:hide}. Note that when using decimal alignment in a table the command `\decimalcolnumbers` must be used instead of `\colnumbers` and `\decimals`. ### Hiding columns Entire columns can be \underline{h}idden from display simply by changing the specified column identifier to ``h``. In the \latex tabular environment this column identifier conceals the entire column including the header columns. In \aastex's deluxetables the header row is specifically declared with the `\tablehead` call and each header column is marked with `\colhead` call. In order to make a specific header disappear with the ``h`` column identifier in deluxetable use `\nocolhead` instead to suppress that particular column header. Authors can use this option in many different ways. Since column data can be easily suppressed authors can include extra information and hid it based on the comments of co-authors or referees. For wide tables that will have a machine readable version, authors could put all the information in the \latex table but use this option to hid as many columns as needed until it fits on a page. This concealed column table would serve as the example table for the full machine readable version. Regardless of how columns are obscured, authors are responsible for removing any unneeded column data or alerting the editorial office about how to treat these columns during production for the final typeset article. Table \ref{tab:messier} provides some basic information about the first ten Messier Objects and illustrates how many of these new features can be used together. It has automatic column numbering, decimal alignment of the distances, and one concealed column. The Common name column is the third in the \latex deluxetable but does not appear when the article is compiled. This hidden column can be shown simply by changing the ``h`` in the column identifier preamble to another valid value. This table also uses `\tablenum` to renumber the table because a \latex tabular table was inserted before it. ~~~ \begin{deluxetable*}{cchlDlc} \tablenum{1} \tablecaption{Fun facts about the first 10 messier objects\label{tab:messier}} \tablewidth{0pt} \tablehead{ \colhead{Messier} & \colhead{NGC/IC} & \nocolhead{Common} & \colhead{Object} & \multicolumn2c{Distance} & \colhead{} & \colhead{V} \\ \colhead{Number} & \colhead{Number} & \nocolhead{Name} & \colhead{Type} & \multicolumn2c{(kpc)} & \colhead{Constellation} & \colhead{(mag)} } \decimalcolnumbers \startdata M1 & NGC 1952 & Crab Nebula & Supernova remnant & 2 & Taurus & 8.4 \\ M2 & NGC 7089 & Messier 2 & Cluster, globular & 11.5 & Aquarius & 6.3 \\ M3 & NGC 5272 & Messier 3 & Cluster, globular & 10.4 & Canes Venatici & 6.2 \\ M4 & NGC 6121 & Messier 4 & Cluster, globular & 2.2 & Scorpius & 5.9 \\ M5 & NGC 5904 & Messier 5 & Cluster, globular & 24.5 & Serpens & 5.9 \\ M6 & NGC 6405 & Butterfly Cluster & Cluster, open & 0.31 & Scorpius & 4.2 \\ M7 & NGC 6475 & Ptolemy Cluster & Cluster, open & 0.3 & Scorpius & 3.3 \\ M8 & NGC 6523 & Lagoon Nebula & Nebula with cluster & 1.25 & Sagittarius & 6.0 \\ M9 & NGC 6333 & Messier 9 & Cluster, globular & 7.91 & Ophiuchus & 8.4 \\ M10 & NGC 6254 & Messier 10 & Cluster, globular & 4.42 & Ophiuchus & 6.4 \\ \enddata \tablecomments{This table ``hides`` the third column in the \latex when compiled. The Distance is also centered on the decimals. Note that when using decimal alignment you need to include the `\decimals` command before `startdata` and all of the values in that column have to have a space before the next ampersand.} end{deluxetable*} ~~~ ### Splitting a table into multiple horizontal components Since the AAS Journals are now all electronic with no print version there is no reason why tables can not be as wide as authors need them to be. However, there are some artificial limitations based on the width of a print page. The old way around this limitation was to rotate into landscape mode and use the smallest available table font sizes, e.g. `\tablewidth`, to get the table to fit. Unfortunately, this was not always enough but now along with the hide column option outlined in Section \ref{subsubsec:hide} there is a new way to break a table into two or three components so that it flows down a page by invoking a new table type, splittabular or splitdeluxetable. Within these tables a new ``B`` column separator is introduced. Much like the vertical bar option, ``$\vert$``, that produces a vertical table lines the new ``B`` separator indicates where to \underline{B}reak a table. Up to two ``B``s may be included. Table 2 % \ref{tab:deluxesplit} this freaks it out when it is used! shows how to split a wide deluxetable into three parts with the `\splitdeluxetable` command. The `\colnumbers` option is on to show how the automatic column numbering carries through the second table component, see Section \ref{subsubsec:autonumber}. ## Figures \begin{figure}[ht!] \includegraphics{cost} \caption{The subscription (squares) and author publication (asterisks) costs from 1991 to 2013. Subscription cost are on the left Y axis while the author costs are on the right Y axis. All numbers in US dollars and adjusted for inflation. The author charges also account for the change from page charges to digital quanta in April 2011. \label{fig:general}} \end{figure} Authors can include a wide number of different graphics with their articles but encapsulated postscript (EPS) or portable document format (PDF) are encouraged. These range from general figures all authors are familiar with to new enhanced graphics that can only be fully experienced in HTML. The later include figure sets, animations and interactive figures. All enhanced graphics require a static two dimensional representation in the manuscript to serve as the example for the reader. All figures should include detailed and descriptive captions. These captions are absolutely critical for readers for whom the enhanced figure is inaccessible either due to a disability or offline access. This portion of the article provides examples for setting up all these types in with the latest version of \aastex. ## General figures \aastex has a `\plotone` command to display a figure consisting of one EPS/PDF file. Figure \ref{fig:general} is an example which shows the approximate changes in the subscription costs and author publication charges from 1991 to 2013 in the AAS Journals. For a general figure consisting of two EPS/PDF files the `\plottwo` command can be used to position the two image files side by side. Both `\plotone` and `\plottwo` take a `\caption` and an optional `\figurenum` command to specify the figure number\footnote{It is better to not use figurenum and let \latex auto-increment all the figures. If you do use this command you need to mark all of them accordingly.}. Each is based on the ` graphicx` package command, `\includegraphics`. Authors are welcome to use `\includegraphics` along with its optional arguments that control the height, width, scale, and position angle of a file within the figure. More information on the full usage of `\includegraphics` can be found at \break \url{https://en.wikibooks.org/wiki/LaTeX/Importing\_Graphics\#Including\_graphics}. ## Grid figures Including more than two EPS/PDF files in a single figure call can be tricky to easily format. To make the process easier for authors \aastex v6 offers `\gridline` which allows any number of individual EPS/PDF file calls within a single figure. Each file cited in a `\gridline` will be displayed in a row. By adding more `\gridline` calls an author can easily construct a matrix X by Y individual files as a single general figure. For each `\gridline` command a EPS/PDF file is called by one of four different commands. These are `\fig`, `\rightfig`, `\leftfig`, and `\boxedfig`. The first file call specifies no image position justification while the next two will right and left justify the image, respectively. The `\boxedfig` is similar to `\fig` except that a box is drawn around the figure file when displayed. Each of these commands takes three arguments. The first is the file name. The second is the width that file should be displayed at. While any natural \latex unit is allowed, it is recommended that author use fractional units with the `\textwidth`. The last argument is text for a subcaption. Figure \ref{fig:pyramid} shows an inverted pyramid of individual figure constructed with six individual EPS files using the `\gridline` option. ## Enhanced graphics Enhanced graphics have an example figure to serve as an example for the reader and the full graphical item available in the published HTML article. This includes Figure sets, animations, and interactive figures. The Astronomy Image Explorer (\url{http://www.astroexplorer.org/}) provides access to all the figures published in the AAS Journals since they offered an electronic version which was in the mid 1990s. You can filter image searches by specific terms, year, journal, or type. The type filter is particularly useful for finding all published enhanced graphics. As of March 2021 there are over 4000 videos, 1300 figure sets, and 100 interactive figures. The next sections describe how to include these types of graphics in your own manuscripts. ### Figure sets The grid commands given above works great for a limited set of individual figure files but what do you do if you have many 10s or 100s or even 1000s of individual figure files? Figure sets represents a virtual flip book of a large group of similar style figures. The derived PDF article will only shows an example figure while the enhanced content is available in the figure set in the HTML edition. The advantage of a figure set gives the reader the ability to easily sort through a large collection to find individual component figures. The advantage to the author is that grouping similar figures into a figure set can result in significant cost savings in terms of reduced publication charges, see Appendix B. All of the figure set components, along with their html framework, are also available to the reader for download in a single .tar.gz package. Special \latex mark up is required to create a figure set. Prior to \aastex v6 the underlying mark up commands had to be inserted by hand but is now included. Note that when an article with figure set is compiled in \latex none of the component figures are shown and a floating Figure Set caption will appear in the resulting PDF. \begin{figure} \includegraphics{KT_Eri.pdf} \caption{The Swift/XRT X-ray light curve for the first year after outburst of the suspected recurrent nova KT Eri. At a maximum count rate of 328 ct/s, KT Eri was the brightest nova in X-rays observed to date. All the component figures (6) are available in the Figure Set. Note that these components that are {\bf not} shown in the compiled pdf. The figure set consists of the same figures as shown in Figure \ref{fig:pyramid}. The example figure shown for figure sets can be one component or many. \label{fig:fig4}} \end{figure} Authors are encouraged to use an online tool at \url{http://authortools.aas.org/FIGSETS/make-figset.html} to generate their own specific figure set mark up to incorporate into their \latex articles. ### Animations Authors may, and are in fact encouraged, to include animations in their manuscripts. The video will stream inline with the published article and also be available for download. When writing the manuscript, a stand alone figure is necessary to serve as an example for the reader. Ideally, this is a single still frame from the animation but in some case the animation may only represent a small portion of the example figure, say one many panels as shown in Figure \ref{fig:video}. Regardless, it is very important that the author provide descriptive text in the figure caption including start and stop times and the video duration. Authors should review the AAS animation guidelines in the graphics guide at \url{https://journals.aas.org/graphics-guide/#animations}. Animations and interactive figures (Section \ref{sec:interactive}) should use the `\begin{interactive}` environment in the figure call. This environment places a blue border around the figure to indicate that the figure is enhanced in the published HTML article. The command also serves to alert the publisher what files are used to generate the dynamic HTML content. `\interactive` takes two arguments. The first details the type and currently only three are allowed. The types are ` js` for generic javascript interactive figures, ` animation` for inline videos, and ` timeseries` for interactive light curves produced by astropy [@2013A&A...558A..33A]\footnote{To be release in the summer of 2019}. If these types are not provide the compiler will issue an error and quit. The second argument is the file that produces the enhanced feature in the HTML article. ### Interactive figures Interactive figures give the reader the ability to manipulate the information contained in an image which can add clarity or help further the author's narrative. These figures consist of two parts, a static representative figure for the manuscript and the dynamic javascript plus HTML framework that allows for interactive control. An example of an interactive figure is a 3D model. The underlying figure is a X3D file while x3dom.js is the javascript driver that displays it. An author created interface is added via a html wrapper. The first 3D model published by the AAS Journals using this technique was [@2014ApJ...793..127V]. Figure \ref{fig:interactive} provides an interactive example which can be run locally to demonstrate how a simple javascript plus html interface allows a reader to switch between figures. The necessary files for this particular interactive figure are in the ` interactive.tar.gz` file included with this package. Unpack the file and point the browser to the local html file. In this case, the javascript that runs the interactive buttons is embedded in the html file but it could just as easily be calls to external javascript libraries. Ideally, the javascript should be included with the submitted package of interactive files to minimize external dependencies within the published article. Authors should consult the online tutorials at \url{https://journals.aas.org/graphics-guide/#interactive_figures} for more information on what is currently supported and links to tutorials and examples. # Displaying mathematics The most common mathematical symbols and formulas are in the amsmath package. \aastex requires this package so there is no need to specifically call for it in the document preamble. Most modern \latex\ distributions already contain this package. If you do not have this package or the other required packages, revtex4-1, latexsym, graphicx, amssymb, longtable, and epsf, they can be obtained from \url{http://www.ctan.org} Mathematics can be displayed either within the text, e.g. $E = mc^2$, or separate from in an equation. In order to be properly rendered, all inline math text has to be declared by surrounding the math by dollar signs (\$). A complex equation example with inline math as part of the explanation follows. \begin{equation} \bar v(p_2,\sigma_2)P_{-\tau}\hat a_1\hat a_2\cdots \hat a_nu(p_1,\sigma_1) , \end{equation} where $p$ and $\sigma$ label the initial $e^{\pm}$ four-momenta and helicities $(\sigma = \pm 1)$, $\hat a_i=a^\mu_i\gamma_\nu$ and $P_\tau=\frac{1}{2}(1+\tau\gamma_5)$ is a chirality projection operator $(\tau = \pm1)$. This produces a single line formula. \latex will auto-number this and any subsequent equations. If no number is desired then the ` equation` call should be replaced with ` displaymath`. \latex can also handle a a multi-line equation. Use ` eqnarray` for more than one line and end each line with a \textbackslash\textbackslash. Each line will be numbered unless the \textbackslash\textbackslash is preceded by a `\nonumber` command. Alignment points can be added with ampersands (\&). There should be two ampersands per line. In the examples they are centered on the equal symbol. \begin{eqnarray} \gamma^\mu & = & \left( \begin{array}{cc} 0 & \sigma^\mu_+ \\ \sigma^\mu_- & 0 \end{array} \right) , \gamma^5= \left( \begin{array}{cc} -1 & 0\\ 0 & 1 \end{array} \right) , \\ \sigma^\mu_{\pm} & = & ({\bf 1} ,\pm \sigma) , \end{eqnarray} \begin{eqnarray} \hat a & = & \left( \begin{array}{cc} 0 & (\hat a)_+\\ (\hat a)_- & 0 \end{array}\right), \nonumber \\ (\hat a)_\pm & = & a_\mu\sigma^\mu_\pm \end{eqnarray} # Revision tracking and color highlighting Authors sometimes use color to highlight changes to their manuscript in response to editor and referee comments. In \aastex new commands have been introduced to make this easier and formalize the process. A summary list of all these tracking commands can be produced at the end of the article by adding the `\listofchanges` just before the `\end{document}` call. The page number for each change will be provided. If the ` linenumbers` option is also included in the documentclass call then not only will all the lines in the article be numbered for handy reference but the summary list will also include the line number for each change. The second method does not have the ability to highlight the specific nature of the changes but does allow the author to document changes over multiple revisions. The commands are `\edit1{}`, `\edit2{}` and `\edit3{}` and they produce `` that is highlighted in bold, bold+italic and bold+underline, respectively. Authors should use the first command to accepted after the 3rd revision these commands make it easy to identify what text has been added and when. Once the article is accepted all the highlight color can be turned off simply by adding the `\turnoffediting` command in the preamble. Likewise, the new commands `\turnoffeditone`, `\turnoffedittwo`, and `\turnoffeditthree` can be used to only turn off the `\edit1{}`, `\edit2{}` and `\edit3{}`, respectively. Similar to marking editing changes with the `\edit` options there are also the `\authorcomments1{}`, `\authorcomments2{}` and `\authorcomments3{}` commands. These produce the same bold red, italic blue and underlined purple text but when the `\turnoffediting` command is present the `` material does not appear in the manuscript. Authors can use these commands to mark up text that they are not sure should appear in the final manuscript or as a way to communicate comments between co-authors when writing the article. # Software and third party data repository citations The AAS Journals would like to encourage authors to change software and third party data repository references from the current standard of a footnote to a first class citation in the bibliography. As a bibliographic citation these important references will be more easily captured and credit will be given to the appropriate people. The first step to making this happen is to have the data or software in a long term repository that has made these items available via a persistent identifier like a Digital Object Identifier (DOI). A list of repositories that satisfy this criteria plus each one's pros and cons are given at \break \url{https://github.com/AASJournals/Tutorials/tree/master/Repositories}. In the bibliography the format for data or code follows this format: `author year, title, version, publisher, prefix:identifier` [@2015ApJ...805...23C] provides a example of how the citation in the article references the external code at `\doi{10.5281/zenodo.15991}`. Unfortunately, bibtex does not have specific bibtex entries for these types of references so the ``@misc`` type should be used. The Repository tutorial explains how to code the ``@misc`` type correctly. The most recent aasjournal.bst file, available with \aastex v6, will output bibtex ``@misc`` type properly. :::{.acknowledgements} We thank all the people that have made this AASTeX what it is today. This includes but not limited to Bob Hanisch, Chris Biemesderfer, Lee Brotzman, Pierre Landau, Arthur Ogawa, Maxim Markevitch, Alexey Vikhlinin and Amy Hendrickson. Also special thanks to David Hogg and Daniel Foreman-Mackey for the new "modern" style design. Considerable help was provided via bug reports and hacks from numerous people including Patricio Cubillos, Alex Drlica-Wagner, Sean Lake, Michele Bannister, Peter Williams, and Jonathan Gagne. ::: :::{.appendix} [@include:include/appendix1] [@include:include/appendix2] :::