========================== C++ Standard Draft Sources ========================== These are the sources used to generate drafts of the C++ standard. These sources should not be considered an ISO publication, nor should documents generated from them unless officially adopted by the C++ working group (ISO/IEC JTC1/SC22/WG21). Get involved: - `How to submit an editorial issue `_ - `How to tell if an issue is editorial `_ - `How to submit a new issue/defect report `_ for non-editorial issues More information about the C++ standard can be found at `isocpp.org `_. --------------------------- Getting Started on Mac OS X --------------------------- Install the `MacTeX distribution `_. If you are on a slow network, you'll want to get the `BasicTeX package `_ instead, then run the following command to install the other packages that the draft requires:: sudo tlmgr install latexmk isodate substr relsize ulem fixme rsfs extract layouts enumitem l3packages l3kernel imakeidx splitindex xstring --------------------------------------- Getting Started on Debian-based Systems --------------------------------------- Install the following packages:: sudo apt-get install latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended lmodern ------------------------- Getting Started on Fedora ------------------------- Install the following packages:: dnf install latexmk texlive texlive-isodate texlive-relsize texlive-ulem texlive-fixme texlive-extract texlive-l3kernel texlive-l3packages texlive-splitindex texlive-imakeidx ----------------------------- Getting Started on Arch Linux ----------------------------- Install the following packages:: pacman -S make texlive-latexextra texlive-binextra texlive-plaingeneric texlive-fontsrecommended ----------------------------- Getting Started on Microsoft Windows ----------------------------- Install Perl (for example, using a `Cygwin installation `_ and adding perl. See `sample instructions `_ for more details) Install `MiKTeX `_ Alternatively, you can `install WSL `_ and a Linux distribution, and follow the instructions for Linux above. ------------ Instructions ------------ To typeset the draft document, from the ``source`` directory run:: make That's it! You should now have an ``std.pdf`` containing the typeset draft. Generated input files ===================== To regenerate figures from .dot files, run:: make For example:: make figvirt.pdf Verifying input and output when making changes ============================================== While in the ``source`` directory, you can check for common mistakes such as misaligned comments with:: ../tools/check-source.sh After typesetting the document, you can also check the output for further problems with:: ../tools/check-output.sh GitHub Actions will also run these checks when you create a pull request, but it's often faster if you run them locally first. ---------------- Acknowledgements ---------------- A great deal of gratitude goes out to Pete Becker for his amazing work in the original conversion of the C++ standard drafts to LaTeX, and his subsequent maintenance of the standard drafts up to C++11. Thank you Pete. Thanks to Walter Brown for suggesting the use of ``latexmk``.