Jinwen-XU / Q-and-A

Typesetting Q&A-style conversation made easier

Home Page:https://ctan.org/pkg/q-and-a

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Package dependencies: enumitem, einfart, listings, minimalist, projlib, tcolorbox.

Screenshots

Click to show

image (From the documentation.)

image (From the English demo document.)

image (From the demo document for multiple questions/answers.)

image (From the demo document for theme "ChatGPT-dark".)

image (From the demo document for theme "ChatGPT-classical-dark".)

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 LaTeX2e kernel must be at least as new as 2023/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:

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 by projlib-language; the one for setting date format is \SetDatetimeInputFormat, provided by projlib-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.

About

Typesetting Q&A-style conversation made easier

https://ctan.org/pkg/q-and-a

License:LaTeX Project Public License v1.3c


Languages

Language:TeX 100.0%