├── .github └── workflows │ ├── actionlint.yml │ ├── bibcop.yml │ ├── copyrights.yml │ ├── latexmk.yml │ ├── markdown-lint.yml │ ├── pdd.yml │ ├── reuse.yml │ ├── typos.yml │ ├── xcop.yml │ └── yamllint.yml ├── .gitignore ├── .gitmodules ├── .latexmkrc ├── .rultor.yml ├── .texsc ├── DEPENDS.txt ├── LICENSE.txt ├── LICENSES └── MIT.txt ├── README.md ├── REUSE.toml ├── aspell.en.pws ├── hat.pdf ├── main.tex └── renovate.json /.github/workflows/actionlint.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: actionlint 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | actionlint: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - name: Download actionlint 20 | id: get_actionlint 21 | run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) 22 | shell: bash 23 | - name: Check workflow files 24 | run: ${{ steps.get_actionlint.outputs.executable }} -color 25 | shell: bash 26 | -------------------------------------------------------------------------------- /.github/workflows/bibcop.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2021-2025 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: bibcop 6 | 'on': 7 | push: 8 | pull_request: 9 | jobs: 10 | bibcop: 11 | timeout-minutes: 15 12 | runs-on: ubuntu-24.04 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: yegor256/bibcop-action@master 16 | -------------------------------------------------------------------------------- /.github/workflows/copyrights.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: copyrights 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | copyrights: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: yegor256/copyrights-action@0.0.8 20 | -------------------------------------------------------------------------------- /.github/workflows/latexmk.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: latexmk 6 | 'on': 7 | push: 8 | jobs: 9 | build: 10 | timeout-minutes: 15 11 | runs-on: ubuntu-24.04 12 | steps: 13 | - uses: actions/checkout@v4 14 | - run: sudo apt-get install --yes python3-pygments && sudo pip3 install pygments 15 | - run: sudo apt-get install --yes ghostscript 16 | - uses: yegor256/latexmk-action@0.16.1 17 | with: 18 | opts: -pdf 19 | depends: DEPENDS.txt 20 | - run: | 21 | mkdir gh-pages 22 | cp main.pdf gh-pages 23 | - uses: JamesIves/github-pages-deploy-action@v4.7.3 24 | with: 25 | branch: gh-pages 26 | folder: gh-pages 27 | clean: false 28 | -------------------------------------------------------------------------------- /.github/workflows/markdown-lint.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: markdown-lint 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | markdown-lint: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: DavidAnson/markdownlint-cli2-action@v20.0.0 20 | -------------------------------------------------------------------------------- /.github/workflows/pdd.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: pdd 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | pdd: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: volodya-lombrozo/pdd-action@master 20 | -------------------------------------------------------------------------------- /.github/workflows/reuse.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: reuse 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | reuse: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: fsfe/reuse-action@v5 20 | -------------------------------------------------------------------------------- /.github/workflows/typos.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: typos 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | typos: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: crate-ci/typos@v1.32.0 20 | -------------------------------------------------------------------------------- /.github/workflows/xcop.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: xcop 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | xcop: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: g4s8/xcop-action@master 20 | -------------------------------------------------------------------------------- /.github/workflows/yamllint.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | name: yamllint 6 | 'on': 7 | push: 8 | branches: 9 | - master 10 | pull_request: 11 | branches: 12 | - master 13 | jobs: 14 | yamllint: 15 | timeout-minutes: 15 16 | runs-on: ubuntu-24.04 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: ibiqlik/action-yamllint@v3 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _docshots/ 2 | _minted-main/ 3 | .DS_Store 4 | .idea/ 5 | main.aux 6 | main.bbl 7 | main.bcf 8 | main.blg 9 | main.fdb_latexmk 10 | main.fls 11 | main.log 12 | main.out 13 | main.pdf 14 | main.pyg 15 | main.run.xml 16 | node_modules/ 17 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "bibliography"] 2 | path = bibliography 3 | url = https://github.com/yegor256/bibliography 4 | -------------------------------------------------------------------------------- /.latexmkrc: -------------------------------------------------------------------------------- 1 | $pdflatex = 'pdflatex -interaction=batchmode -halt-on-error -shell-escape %O %S'; 2 | $latex = 'latex -interaction=batchmode -halt-on-error -shell-escape %O %S'; 3 | $clean_ext = 'crumbs'; 4 | $success_cmd = 'texqc && texsc'; 5 | -------------------------------------------------------------------------------- /.rultor.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | --- 4 | # yamllint disable rule:line-length 5 | docker: 6 | image: yegor256/rultor-image:1.24.0 7 | install: | 8 | sudo tlmgr option repository ctan 9 | sudo tlmgr --verify-repo=none update --self 10 | sudo tlmgr --verify-repo=none install $(cut -d' ' -f2 DEPENDS.txt | uniq) 11 | sudo tlmgr --verify-repo=none update $(cut -d' ' -f2 DEPENDS.txt | uniq) 12 | merge: 13 | script: | 14 | latexmk -pdf 15 | -------------------------------------------------------------------------------- /.texsc: -------------------------------------------------------------------------------- 1 | --pws=aspell.en.pws 2 | --ignore=href:pp 3 | --ignore=qte:oppp 4 | --ignore=ffcode 5 | --ignore=ff 6 | --ignore=tabular:p 7 | --ignore=nospell 8 | --ignore=citet,citep,bibentry 9 | --ignore=settopmatter 10 | --ignore=documentclass:op 11 | --ignore=WarningFilter:pp 12 | -------------------------------------------------------------------------------- /DEPENDS.txt: -------------------------------------------------------------------------------- 1 | hard doi 2 | hard acmart 3 | hard algorithmicx 4 | hard algpseudocodex 5 | hard anyfontsize 6 | hard babel-russian 7 | hard bibcop 8 | hard biblatex 9 | hard cancel 10 | hard catchfile 11 | hard cjk 12 | hard cm-super 13 | hard comment 14 | hard currfile 15 | hard cyrillic 16 | hard datetime 17 | hard docshots 18 | hard enumitem 19 | hard environ 20 | hard fdsymbol 21 | hard ffcode 22 | hard fmtcount 23 | hard footmisc 24 | hard framed 25 | hard fvextra 26 | hard href-ul 27 | hard hyperxmp 28 | hard hyphen-russian 29 | hard iexec 30 | hard ifmtarg 31 | hard lastpage 32 | hard lh 33 | hard libertine 34 | hard makecell 35 | hard ncctools 36 | hard paralist 37 | hard preprint 38 | hard silence 39 | hard stmaryrd 40 | hard svg 41 | hard textpos 42 | hard titling 43 | hard to-be-determined 44 | hard totpages 45 | hard transparent 46 | hard trimspaces 47 | hard upquote 48 | hard wrapfig 49 | hard xstring 50 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2022 Yegor Bugayenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included 13 | in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSES/MIT.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2022 Yegor Bugayenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included 13 | in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![latexmk](https://github.com/yegor256/latex-best-practices/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/latex-best-practices/actions/workflows/latexmk.yml) 2 | 3 | Read the PDF in [here](https://yegor256.github.io/latex-best-practices/main.pdf). 4 | -------------------------------------------------------------------------------- /REUSE.toml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: Copyright (c) 2025 Yegor Bugayenko 2 | # SPDX-License-Identifier: MIT 3 | 4 | version = 1 5 | [[annotations]] 6 | path = [ 7 | ".DS_Store", 8 | ".gitattributes", 9 | ".gitignore", 10 | ".gitmodules", 11 | ".latexmkrc", 12 | ".texsc", 13 | "**.jpg", 14 | "**.json", 15 | "**.md", 16 | "**.pdf", 17 | "**.png", 18 | "**.txt", 19 | "**/.DS_Store", 20 | "**/.gitignore", 21 | "**/.gitmodules", 22 | "**/.latexmkrc", 23 | "**/.texsc", 24 | "**/*.csv", 25 | "**/*.jpg", 26 | "**/*.json", 27 | "**/*.md", 28 | "**/*.pdf", 29 | "**/*.png", 30 | "**/*.svg", 31 | "**/*.txt", 32 | "**/*.vm", 33 | "**/aspell.en.pws", 34 | "**/CNAME", 35 | "**/DEPENDS.txt", 36 | "aspell.en.pws", 37 | "DEPENDS.txt", 38 | "rc", 39 | "README.md", 40 | "renovate.json", 41 | ] 42 | precedence = "override" 43 | SPDX-FileCopyrightText = "Copyright (c) 2025 Yegor Bugayenko" 44 | SPDX-License-Identifier = "MIT" 45 | -------------------------------------------------------------------------------- /aspell.en.pws: -------------------------------------------------------------------------------- 1 | personal_ws-1.1 en 741 utf-8 2 | Yegor 3 | Bugayenko 4 | LaTeX 5 | biber 6 | -------------------------------------------------------------------------------- /hat.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yegor256/latex-best-practices/e9148b51ed2c6bcb62f30b238581e9b1d6b26d78/hat.pdf -------------------------------------------------------------------------------- /main.tex: -------------------------------------------------------------------------------- 1 | % SPDX-FileCopyrightText: Copyright (c) 2022 Yegor Bugayenko 2 | % SPDX-License-Identifier: MIT 3 | 4 | \documentclass[11pt,nonacm]{acmart} 5 | \usepackage{silence} 6 | \WarningFilter{acmart}{\vspace should only be used to provide space above/below} 7 | \makeatletter\let\@authorsaddresses\@empty\makeatother 8 | \usepackage[T1]{fontenc} 9 | \usepackage{href-ul} 10 | \usepackage[tt=false,type1=true]{libertine} 11 | \usepackage{amsmath} 12 | \usepackage{natbib} 13 | \usepackage{doi} 14 | \usepackage{multicol} 15 | \usepackage[nocn,noframes]{ffcode} 16 | \usepackage{tabularx} 17 | \usepackage[runs=2]{docshots} 18 | \docshotPrerequisite{main.bib} 19 | \usepackage{xcolor} 20 | \usepackage{paralist} 21 | \usepackage{microtype} 22 | \title{% 23 | \texorpdfstring 24 | {\includegraphics[width=1in]{hat.pdf} \\ Academic Writing in \LaTeX: \texorpdfstring{\\}{} Best and Worst Practices} 25 | {Academic Writing in LaTeX: Best and Worst Practices}} 26 | \author{Yegor Bugayenko} 27 | \usepackage{bibcop} 28 | \pagenumbering{gobble} 29 | \raggedbottom 30 | \tolerance=2000 31 | \setlength{\parindent}{0pt} 32 | \setlength{\columnsep}{32pt} 33 | \setlength{\parskip}{6pt} 34 | \setlength{\headheight}{18pt} 35 | \setlength{\footskip}{18pt} 36 | 37 | \newcounter{hint} 38 | \newcommand{\hint}{\refstepcounter{hint}\S\arabic{hint}: } 39 | 40 | \begin{abstract} 41 | This is a humble attempt to summarize most typical mistakes we 42 | make while writing academic papers in \LaTeX{} and most important 43 | recommendations. Each suggestion or a mistake takes a short paragraph of 44 | description right here and also may suggest looking into a more detailed 45 | explanation in some other online resource. We recommend, before submitting 46 | your paper to a conference or a journal, go through this list of mistakes and 47 | make sure none of them are present in your paper. 48 | \end{abstract} 49 | 50 | \begin{document} 51 | \pagestyle{plain} 52 | \date{\today} 53 | \maketitle 54 | 55 | \LaTeX{} sources of this document you can find in 56 | \href{https://github.com/yegor256/latex-best-practices}{this GitHub repository} 57 | and contribute your ideas through a pull request. 58 | 59 | Beforehand, we suggest you read these: 60 | \begin{itemize} 61 | \item \href{https://developers.google.com/tech-writing/overview}{Technical Writing Courses by Google} 62 | \item Book by \citet{zobel2004writing} 63 | \end{itemize} 64 | 65 | \hint 66 | Check your \ff{.tex} sources with \href{https://www.ctan.org/tex-archive/support/lacheck/}{lacheck} 67 | and maybe other tools. 68 | 69 | \section{Preamble} 70 | 71 | \hint 72 | Use \href{https://ctan.org/pkg/acmart?lang=en}{\ff{acmart}} document style and read their \href{https://www.acm.org/publications/taps/latex-best-practices}{Best Practices}. Start the document with this: 73 | \begin{ffcode} 74 | \documentclass[11pt,nonacm,natbib=false]{acmart} 75 | \settopmatter{printfolios=false,printccs=false,printacmref=false} 76 | \usepackage[maxnames=1,minnames=1,natbib=true, 77 | citestyle=authoryear,bibstyle=authoryear]{biblatex} 78 | \addbibresource{main.bib} 79 | \end{ffcode} 80 | 81 | \hint 82 | Use \href{https://ctan.org/pkg/biblatex}{\ff{biblatex}} and \href{https://ctan.org/pkg/biber}{\ff{biber}}, here is \href{https://tex.stackexchange.com/a/25702/1449}{why}. Place your citations into \ff{main.bib} file. Later in the document print the bibliography with \ff{\char`\\printbibliography} command. 83 | 84 | \section{Headings} 85 | 86 | \hint 87 | Capitalize all nouns and verbs in headings, \href{https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case}{here} is why and how. 88 | 89 | \section{Typography} 90 | 91 | \hint 92 | Use single dash inside words, e.g.: \ff{micro-service}. 93 | Use double ``endash'' between numbers, e.g.: \ff{pages 15-{}-28}. 94 | Use triple ``emdash'' between words avoiding spaces, e.g.: \\ 95 | \ff{We-{}-{}-since you ask-{}-{}-disagree}.\\ 96 | Read \href{https://tex.stackexchange.com/questions/3819/dashes-vs-vs}{this}. 97 | 98 | \section{Fonts} 99 | 100 | \hint 101 | Prefer \ff{\char`\\emph} over \ff{\char`\\textit}, here is \href{https://tex.stackexchange.com/a/1983/1449}{why}. 102 | 103 | \hint 104 | Avoid \ff{\char`\\textbf} and all other font changing commands at all cost. Here is \href{https://www.yegor256.com/2019/05/21/dont-improvise.html}{my rant} on this very problem of technical people trying to make their products look visually attractive and failing miserably. 105 | 106 | \section{Colors} 107 | 108 | \hint 109 | Do not use them. Keep your documents strictly black-on-white. 110 | Read \href{https://academia.stackexchange.com/questions/13616/are-there-good-reasons-to-avoid-using-color-in-research-papers}{more} about this. 111 | 112 | \section{Code Snippets} 113 | 114 | \hint 115 | Use the \href{https://ctan.org/pkg/ffcode}{\ff{ffcode}} package, 116 | which allows writing both code snippets and fixed-width-font 117 | in-paragraph text blocks. 118 | 119 | \section{Figures and Tables} 120 | 121 | \hint 122 | Do not force positioning in figures and tables, like 123 | \ff{\char`\\begin\{table\}[h]}. Instead, just wrap them 124 | in the \ff{\char`\\begin\{table\}}. 125 | 126 | \hint 127 | As recommended by \citet{clancy2020}, make sure 128 | the explanation you place into \ff{\char`\\caption} is 129 | detailed enough to let your reader understand the content without 130 | searching the text; see how it is done in 131 | \href{https://arxiv.org/abs/2203.07814}{this paper}. 132 | 133 | \hint 134 | Prefer a list over a table and a table over a graph. 135 | 136 | \hint 137 | Align text cells by left, center headings, and align cells with numbers by right (read \href{https://latex.org/forum/viewtopic.php?t=24435}{this discussion}); \href{https://ux.stackexchange.com/questions/24066/what-is-the-best-practice-for-data-table-cell-content-alignment}{here} is a more detailed discussion. Here is an example of a table properly formatted: 138 | \begin{docshot} 139 | \documentclass{article} 140 | \usepackage[paperwidth=3in]{geometry} 141 | \pagestyle{empty} 142 | \usepackage{booktabs} 143 | \usepackage{tabularx} 144 | \begin{document} 145 | \begin{tabularx}{\columnwidth} 146 | {lr>{\raggedright\arraybackslash}X} 147 | \toprule 148 | Name & Age & Role \\ 149 | \midrule 150 | Jeff & 35 & The creator of the main 151 | algorithm and the owner of the code \\ 152 | Sarah & 38 & The architect of all 153 | microservices and the developer of 154 | Java modules \\ 155 | \bottomrule 156 | \end{tabularx} 157 | \end{document} 158 | \end{docshot} 159 | 160 | \hint 161 | Put all tables into the \ff{table} environment (the \ff{\char`\\caption} goes on top): 162 | \begin{ffcode} 163 | \begin{table} 164 | \caption{Caption} 165 | \label{tab:my-table} 166 | .. content goes here 167 | \end{table} 168 | \end{ffcode} 169 | 170 | \hint 171 | Put all tables into the \ff{figure} environment (the \ff{\char`\\caption} stands at the bottom): 172 | \begin{ffcode} 173 | \begin{figure} 174 | .. content goes here 175 | \caption{The caption} 176 | \label{fig:my-figure} 177 | \end{figure} 178 | \end{ffcode} 179 | 180 | \hint 181 | In the \ff{acmart} document class, use the |\begin{table*}| and |\begin{figure*}| (with a trailing asterisk), 182 | in order to render it whole-page wide. 183 | 184 | \section{Bullets} 185 | 186 | \hint 187 | Prefer in-paragraph itemization over a vertical one and use 188 | the \href{https://ctan.org/pkg/paralist}{\ff{paralist}} package: 189 | \begin{docshot} 190 | \documentclass{article} 191 | \usepackage[paperwidth=3in]{geometry} 192 | \pagestyle{empty} 193 | \usepackage{paralist} 194 | \begin{document} 195 | The following sources were analyzed: 196 | \begin{inparaenum}[1)] 197 | \item GitHub, 198 | \item Google, 199 | and 200 | \item Stack Overflow. 201 | \end{inparaenum} 202 | \end{document} 203 | \end{docshot} 204 | 205 | \hint 206 | In all itemization use \href{https://en.wikipedia.org/wiki/Serial_comma}{Oxford comma}, 207 | as in the list above before the ``and'' (provided there are more than two items). 208 | 209 | \section{URLs} 210 | 211 | \hint 212 | Use the \href{https://ctan.org/pkg/href-ul}{\ff{href-ul}} 213 | package and then the \ff{\char`\\href} command. 214 | 215 | \section{References} 216 | 217 | \hint 218 | Do not use the \ff{\char`\\ref}. Instead, use the \ff{\char`\\cref} 219 | from the \href{https://ctan.org/pkg/cleveref}{\ff{cleveref}} package. 220 | 221 | \section{Citations} 222 | 223 | \hint 224 | This code demonstrates how to use \href{https://libguides.murdoch.edu.au/APA}{APA}-style 225 | citations with \href{https://journals.aas.org/natbib/}{\ff{natbib}} commands: 226 | \docshotAfter{biber $2} 227 | \begin{docshot} 228 | \documentclass{article} 229 | \usepackage[paperwidth=3in]{geometry} 230 | \pagestyle{empty} 231 | \usepackage[natbib=true,citestyle=authoryear, 232 | bibstyle=authoryear]{biblatex} 233 | \addbibresource{main.bib} 234 | \begin{document} 235 | In \citeyear{west2004object} it was already 236 | mentioned by \citeauthor{west2004} that 237 | object-oriented design is 238 | declarative~\citep{west2004}. Later, 239 | \citet{eolang2021} suggested a new 240 | programming language in this paradigm. 241 | \printbibliography 242 | \end{document} 243 | \end{docshot} 244 | 245 | \hint 246 | Place \ff{\~} (tilde) symbol before the \ff{\char`\\citep}, 247 | in order to avoid line breaks, 248 | \href{https://tex.stackexchange.com/questions/41264/what-is-the-difference-in-citing-referencing-with-or-without-tilde}{see why}. 249 | 250 | \hint 251 | Do not use \ff{\char`\\cite}, only \ff{\char`\\citep} and \ff{\char`\\citet}. 252 | 253 | \hint 254 | Prefer \ff{\char`\\citet} over the \ff{\char`\\citep}, 255 | making references more obvious, as in the second sentence in the example above. 256 | 257 | \hint 258 | Do not type author names or reference titles directly, 259 | only use \ff{\char`\\cite*} commands. 260 | 261 | \hint 262 | Remember that \href{https://www.ece.ucdavis.edu/~jowens/biberrors.html}{brackets are not words}. 263 | 264 | \hint 265 | Do not cite Web pages or any other URLs. However, if you need to do this, 266 | use the following format in the \ff{.bib} file: 267 | 268 | \begin{ffcode} 269 | @misc{bugayenko2019blog0521, 270 | author = {Bugayenko, Yegor}, 271 | title = {{Please, Don't Improvise}}, 272 | howpublished = {\url{https://www.yegor256.com/190521.html}}, 273 | year = {2019}, 274 | note = {[Online; accessed 09-04-2024]} 275 | } 276 | \end{ffcode} 277 | 278 | \hint 279 | Add \href{https://ctan.org/pkg/bibcop}{bibcop} to your document, 280 | to make sure the \ff{.bib} file is properly formatted. 281 | 282 | \section{References} 283 | 284 | \hint 285 | The references in the \ff{.bib} file are usually imported from 286 | Google Scholar or similar sources. Unfortunately, such imports 287 | often contain typos and mistakes. 288 | Use \href{https://github.com/yegor256/bibcop}{bibcop} 289 | to check your \ff{.bib} file. 290 | 291 | {\raggedright 292 | \bibliographystyle{ACM-Reference-Format} 293 | \bibliography{bibliography/main}} 294 | 295 | \end{document} 296 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | --------------------------------------------------------------------------------