Directory macros/latex/contrib/q-and-a
Q-and-A
— Typesetting Q&A-style conversation made easier
Introduction
Q-and-A
is a LaTeX document class for you to typeset Q&A-style conversation. It turns simple pure text Q&A dialog into carefully designed document.
Notably, it features two themes, ChatGPT-light
and ChatGPT-dark
, enabling you to format your Q&A dialog in a way that closely resembles the interface of ChatGPT.
Screenshots
From the documentation.
From the demo document for theme "ChatGPT-dark".
From the demo document for theme "ChatGPT-classical-dark".
From the English demo document.
From the demo document for multiple questions/answers.
Installation and preparation
How to install this package
If you are using TeX Live 2024 or newer, or the most recent version of MikTeX, then this package should already be included, and you don't need to do anything.
Otherwise, you need to check for package update to see if you can receive it. In case not, you can always go to the CTAN page to download the .zip
file with all related files included.
Attention:
For this document class to function properly, the LaTeX2ε kernel must be at least as new as2023/11/01
.
Usage
Please refer to the documentation for detailed usage.
You may get started by exploring the demo documents.
If you don't find what you were expecting, or if you would like some elements to be changed or improved, feel free to post a feature request via the GitHub issue.
TeXnical details
Engines and base classes
- With pdfLaTeX, the base class is
minimart
. - With XeLaTeX or LuaLaTeX, the base class is
einfart
.
Regarding the fonts
If you are using XeLaTeX or LuaLaTeX to compile your document, then the current document class requires the following open-source fonts that are not included in the standard TeX collection:
- The Source Han font series at Adobe Fonts. More specifically:
- Source Han Serif, go to its Release page.
- Source Han Sans, go to its Release page.
- Source Han Mono, go to its Release page.
These are necessary if you wish to write your document in Chinese (either simplified or traditional) or Japanese. Also, without these fonts installed, the compilation speed might be much slower — the compilation would still pass, but the system shall spend (quite) some time verifying that the fonts are indeed missing before switching to the fallback fonts.
Some aspects
On the functionality
The main features are achieved with the power of LaTeX3's regex functionality. It scans the content paragraph by paragraph and converts recognized patterns into corresponding TeX commands. However, this comes with a price: in order to scan the content, it is firstly stored in a macro, and that means that you cannot use commands like \verb
in your main text. Also, synctex won't work properly.
Language and date format
Language and date format can both be set in two ways: as class option or with corresponding commands.
- The user-level command for setting language is
\UseLanguage
, provided byprojlib-language
; the one for setting date format is\SetDatetimeInputFormat
, provided byprojlib-date
. - When you set the language, it is not exactly the same using class option or using command: when you select a language via class option, only the setting for this language would be loaded; however, with
\UseLanguage
, it would load all the language settings and then switch to your selected one. Sometimes the page breaking behavior differs slightly. Personally I prefer the\UseLanguage
approach, for this would allow you to switch language in the middle of your document.
Scroll mode
The scroll mode is achieved by directly accessing \pdfpageheight
(pdfTeX and XeTeX) or \pageheight
(LuaTeX). It is worth noting that in order to calculate the height needed, the entire content are put into a single box, which puts a limitation on the length of your document (but this usually wouldn't be a problem).
License
This work is released under the LaTeX Project Public License, v1.3c or later.
The ChatGPT logo image used in the demo document is not an official version. It has been created by the author by overlaying the OpenAI logo onto a colored background, with the background color being extracted directly from the ChatGPT interface using a color picker tool. This was done solely for the purpose of replicating the layout of the actual ChatGPT interface. The author does not assert any copyright claims or ownership over the design of this logo. Users are kindly advised to replace this logo image in their respective documents with their own authorized version.
Download the contents of this package in one zip archive (695.9k).
Q-and-A – Typesetting Q&A-style conversation made easier
Q-and-A is a LaTeX document class for you to typeset Q&A-style conversation. It turns simple pure text Q&A dialog into a carefully designed document.
Notably, it features two themes, ChatGPT-light and ChatGPT-dark, enabling you to format your Q&A dialog in a way that closely resembles the interface of ChatGPT.
Package | Q-and-A |
Repository | https://github.com/Jinwen-XU/Q-and-A |
Version | 2023-12-19 |
Licenses | The LaTeX Project Public License 1.3c |
Copyright | 2023 Jinwen XU |
Maintainer | Jinwen XU |
Contained in | TeX Live as q-and-a MiKTeX as q-and-a |
Topics | Class Multi-lingual Experimental LaTeX3 Article-like |