From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.text.pandoc/32017 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: John MacFarlane Newsgroups: gmane.text.pandoc Subject: ANN: pandoc 3.0 Date: Wed, 18 Jan 2023 13:27:54 -0800 Message-ID: Reply-To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25522"; mail-complaints-to="usenet@ciao.gmane.io" To: pandoc-announce-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-X-From: pandoc-discuss+bncBCJZJHG45QDBBX6IUGPAMGQEDW6ZVYY-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Wed Jan 18 22:28:04 2023 Return-path: Envelope-to: gtp-pandoc-discuss@m.gmane-mx.org Original-Received: from mail-pj1-f62.google.com ([209.85.216.62]) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pIFyV-0006Pb-J8 for gtp-pandoc-discuss@m.gmane-mx.org; Wed, 18 Jan 2023 22:28:03 +0100 Original-Received: by mail-pj1-f62.google.com with SMTP id oa8-20020a17090b1bc800b002292ab4cc4csf2169997pjb.0 for ; Wed, 18 Jan 2023 13:28:03 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674077282; cv=pass; d=google.com; s=arc-20160816; b=sZQTBmA/JBW9KZnWTMuN87EITy+s+TfRzFxSKo3suJ+HFOyzkeC7Bt2rF5X34kluIF 1TXHW4UEWRr0Zmva+Cv4nw98DFanqk+igMueqhcJCEgxh6OQrfJ6KOZ97e3UVsKZ8+2z cw4F5Wb5TTwtAdiojvko3jLmEdApE9NbvUobx+LDlx3tebskRXsBmWLTmADudjpW0C69 4B75yZshzVlSJQ+15xkVlXzdCjp68bFyUXC8cimT7dHDHxykZTNMOof8GLxlx8Rdr9SB z1Z+/SL7yuxmcpBTQFzM3Ebck9FOu/8TkhrYEAyy/qdSovBF8yeWfb5Ih0pblIv38fgV kaLg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:to:date:message-id:subject :mime-version:content-transfer-encoding:from:sender:dkim-signature; bh=5cH22tCN+8RxGkZESevxxBnshriy17bGKmmFn3EeNkw=; b=Cf052cECvDgkJLMykSiaa+s+BRdhHQYTxDRCFqy2H3gSzddHM9SRFodFykM2JsSmQL ipgwORFn5xKoYjAZlxJbB7uycCTXU9SDfK8EvxiFlVPh4FwdgomM9+Bhm6sds54pteT9 wBJPpygcj6J3LZAV9D4o2+bkFoRcvQG1UbYPlYSM6Tx9eOtS+fZydIHstr9PzWhsi8MV 7reQIZ6mjGSN+QBBNUO8EoXvnBAQT8y8HxoCJDm0IwdCs6Y58Hg5zByZRKdK4dySJRkA hMMqBKufLafpDgy4fBel3RPl9hcCNpU3NgxfVAT7sxUcGdOrUYfbzt5Ws1MdvIB1S9G/ xk3w== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@berkeley.edu header.s=google header.b=cjw1eHv8; spf=pass (google.com: domain of jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org designates 2607:f8b0:4864:20::535 as permitted sender) smtp.mailfrom=jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=berkeley.edu DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:date :message-id:subject:mime-version:content-transfer-encoding:from :sender:from:to:cc:subject:date:message-id:reply-to; bh=5cH22tCN+8RxGkZESevxxBnshriy17bGKmmFn3EeNkw=; b=JZX+2Va5T0lgfi/+fWCmL8pQ1vAMPmJ1oqYunUR7fIUXlyjyqRpBK0A4SDvoPhJ7dL MOaFmy2DFlxL8Os8XwXTVud6qz9ELNgLCI/BX4LEPa2MI4jWll6/KXNHbpEdSEfMck2E 8+sPG2UHgQZZ5BTgEBhhjM5rsMgM25CUMmSnccDnycRxfmQwNiyYmuDHB7yHZNvDGWX6 coXMgrKsJMoeaH2tj9njL+ExaUsAM3DCf6Ryg6hESwWw9UBWeBT65uamQs+/enYv4HYt hOdiW5eA1LyhWvE5jjIIZvcESKdad2OPeOzAIyV+qIOP98oSIJY2crKPJAtz/7ix+xiz Vr1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:to:date :message-id:subject:mime-version:content-transfer-encoding:from :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=5cH22tCN+8RxGkZESevxxBnshriy17bGKmmFn3EeNkw=; b=OCkWMlqmBMczOZXHIil8FXvNCj7tvFMB0Eya2eWKwRc4fQVHM/zFyjgiVH+LmTGgYu VcClboi8zsx9Ddx9kKE8ihHc2ieCKJ+6yUOdzukCYpnd1b9qPRfDdQ+yPuSG9YN12MGy M91lS9gHhoRB1UR6mWqksPpBlIAvJhkJ5ijTYQqT99XSDmDYBCNWDGLtgXy4HBSZCno9 k5xnWwfm7r4A8/uh0It1s9WxdZz1zMP6qMqYn/Q8Juz1KWhbWuHwnTh193n+bQWgxo2/ lzFldUP8Z8/mWw49E7lX5tDGb6q1X/eOXWpt8EvYyM3 Original-Sender: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org X-Gm-Message-State: AFqh2kpDPI4rUDN/ONFtimKdm6uu48vJ4JaVhvHyk/tbIZ/+wewV3BH+ xlcjTgxwsnVxBFWX4h21kp4= X-Google-Smtp-Source: AMrXdXtEF4LKxjXmzUk3IyoS8FmZVjm+dEGdm74QPYYr+DyDIbO+mdOy6wVVYPZ38sz9xneducjp8Q== X-Received: by 2002:a17:90a:30d:b0:215:f80c:18e6 with SMTP id 13-20020a17090a030d00b00215f80c18e6mr956987pje.45.1674077282114; Wed, 18 Jan 2023 13:28:02 -0800 (PST) X-BeenThere: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Original-Received: by 2002:a17:90a:3801:b0:227:1b53:908c with SMTP id w1-20020a17090a380100b002271b53908cls3154405pjb.1.-pod-canary-gmail; Wed, 18 Jan 2023 13:27:58 -0800 (PST) X-Received: by 2002:a05:6a20:2ca:b0:b6:4ca8:eb7d with SMTP id 10-20020a056a2002ca00b000b64ca8eb7dmr27570509pzb.50.1674077278306; Wed, 18 Jan 2023 13:27:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674077278; cv=none; d=google.com; s=arc-20160816; b=cuan2f3qrm2EbLF/XFxnm8pgNV3jMulcROzij6MhsBRNtHlyhK2UPI3tJrBydOoWZE GJdv8U8leSaZla7Gd23iBEH0iMWSkPB5JImUjYAHFdxWWDIJHH1dtZZmEuHxR5CwmAj2 C1UVSqibPuSd7LoITdIHqpFJ8oEZUBwEnuFAeODpT2QANft+CIaShRlVDH/+2yN1vddb HSSEWSi6OUHBitamO+87GHR5Ve+K5au201Mh4/yvR1PdAcsGTWxTXUL0hgHt/YUO204A XPgwue4ApFMbYUn7yyp/3UX66JWEcIj4A2VhPCh/zez7U3QehGKe99FHKJ6Fou3gfxJ2 kUjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:date:message-id:subject:mime-version:content-transfer-encoding :from:dkim-signature; bh=mxrLoXrjRC+tfBYXWJy9C1QiKGF039Z4vgsqnnQeOIQ=; b=gmfZUzMXCP7uF298PaTXoIRppBq459uecz9qAM3qsDDCw4LxJWpo1wt8ESCJuuNg1T KFm87eI6LQLfw8FG0qgC0FfdM/liJVpe2UfXnJoNdHSARVg2Thvlkz3X4iH9OmA8WjBk nyEvmqvgndnK6Vc5ZejEUBQeOiBP32wxGWLYWeaUWy7KPd+bnXCoA3jj77gCO8tawARM oz+255WOawotNS5o10owmPvrAtisU34E8vltCx1gHbGrUpLnvcEGB4fdKyZuw64MjJ+7 8tVbizptTuX1Kqb6ipFeytMabZhq11bR4A2KCjF9Np+cL7wU3fvTHNaJCsqgm8Z88h3y cqhQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@berkeley.edu header.s=google header.b=cjw1eHv8; spf=pass (google.com: domain of jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org designates 2607:f8b0:4864:20::535 as permitted sender) smtp.mailfrom=jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=berkeley.edu Original-Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com. [2607:f8b0:4864:20::535]) by gmr-mx.google.com with ESMTPS id e11-20020a63744b000000b004784cf3b50csi2573188pgn.5.2023.01.18.13.27.58 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 18 Jan 2023 13:27:58 -0800 (PST) Received-SPF: pass (google.com: domain of jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org designates 2607:f8b0:4864:20::535 as permitted sender) client-ip=2607:f8b0:4864:20::535; Original-Received: by mail-pg1-x535.google.com with SMTP id r18so25514407pgr.12 for ; Wed, 18 Jan 2023 13:27:58 -0800 (PST) X-Received: by 2002:a05:6a00:4209:b0:58d:8f94:35ec with SMTP id cd9-20020a056a00420900b0058d8f9435ecmr18751353pfb.8.1674077277181; Wed, 18 Jan 2023 13:27:57 -0800 (PST) Original-Received: from smtpclient.apple ([2601:644:4780:3350:c971:66a3:2ef:7e79]) by smtp.gmail.com with ESMTPSA id s8-20020aa78bc8000000b00582579cb0e0sm17278528pfd.129.2023.01.18.13.27.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jan 2023 13:27:55 -0800 (PST) X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Original-Sender: jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@berkeley.edu header.s=google header.b=cjw1eHv8; spf=pass (google.com: domain of jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org designates 2607:f8b0:4864:20::535 as permitted sender) smtp.mailfrom=jgm-TVLZxgkOlNX2fBVCVOL8/A@public.gmane.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=berkeley.edu Precedence: list Mailing-list: list pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org; contact pandoc-discuss+owners-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org List-ID: X-Google-Group-Id: 1007024079513 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Xref: news.gmane.io gmane.text.pandoc:32017 Archived-At: I'm pleased to announce the release of pandoc 3.0, available in the usual places: Binary packages & changelog: https://github.com/jgm/pandoc/releases/tag/3.0 Source & API documentation: http://hackage.haskell.org/package/pandoc-3.0 This is a monster release, with many changes (the changelog is over 1000 lines long). Significant user-facing changes ------------------------------- * The main `pandoc` package now contains just the library; the executable has been moved to `pandoc-cli`. (So, if you used to `cabal install pandoc` you will now need to `cabal install pandoc-cli` to get the command-line tool.) * pandoc now behaves like a Lua interpreter when called as `pandoc-lua` or when `pandoc lua` is used. The Lua API that is available in filters is automatically available. (See the `pandoc-lua` man page.) * pandoc behaves like a server when called as `pandoc-server` or when `pandoc server` is used. (See the `pandoc-server` man page.) * `pandoc-server` now returns a JSON object if JSON is accepted (instead of just a JSON-encoded string, as previously). Properties are `output` (string), `base64` (boolean), and `messages` (array of string). * New output format: `chunkedhtml`. This creates a zip file containing multiple HTML files, one for each section, linked with "next," "previous," "up," and "top" links. (If `-o` is used with an argument without an extension, it is treated as a directory and the zip file is automatically extracted there, unless it already exists.) The top page will contain a table of contents if `--toc` is used. A `sitemap.json` file is also included. The option `--split-level` determines the level at which sections are to be split. * A new command-line option `--list-tables`, causes tables to be formatted as list tables in RST. * New command line option: `--epub-title-page=3Dtrue|false` allows the EPUB title page to be omitted. * `--reference-doc` can now accept a URL argument (#8535) and load a remote reference doc. * A new option `--split-level` replaces `--epub-chapter-level` and affects both EPUB and chunked HTML output. `--epub-chapter-level` will still work but is deprecated. * These deprecated options have been removed: `--atx-headers`, `--strip-empty-paragraphs`. * Add new `mark` extension for highlighted text in Markdown, using `=3D=3D` delimiters. * Add new extensions `wikilinks_title_after_pipe` and `wikilinks_title_before_pipe` for `commonmark` and `markdown`. The former enables links of style `[[Name of page|Title]]` and the latter `[[Title|Name of page]]`. * In a Markdown fenced code block, a "bare" language can now be combined with attributes, e.g. ```haskell {.class #id} * In grid tables, a table foot can be specified by enclosing it with part separator lines (`+` and `=3D`): +------+-------+ | Item | Price | +=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D+ | Eggs | 5=C2=A3 | +------+-------+ | Spam | 3=C2=A3 | +=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D+ | Sum | 8=C2=A3 | +=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D+ * Improved support for complex figures in many formats. There is now a dedicated block-level constructor for Figure, and figures can contain short captions and arbitrary block-level content. In Markdown the `implicit_figures` extension currently remains the only way to represent figures, but the groundwork is there a more flexible figure syntax. * A new `tagging` extension is now supported for the `context` writer, for producing tagged PDFs. * Pandoc no longer looks in `readers` and `writers` subdirectories of the user data directory to find custom readers and writers. Scripts in those directories must be moved to the `custom` folder. * The `man` writer now uses UTF-8 by default; if you are generating man pages for a system that does not support UTF-8, use `--ascii`. * The default HTML template now uses less opinionated CSS, not specifying a font size, line height, or font family. A new `maxwidth` variable sets `max-width`; if not set, 36em is used as a default. * We have reduced the use of inline CSS used for EPUBs. Almost everything is now in the default EPUB CSS, which can be overridden either by putting `epub.css` in the user data directory or by using `--css` on the command line. Inline styles are only used for syntax highlighting (which depends on the style specified, and is only included on pages with highlighted code) and for bibliography formatting (which can depend on the CSL style, and is only used in the page containing the bibliography). * The Lua subsystem now provides many new useful functions, allowing even programmatic control over extensions and formats, templates, zip files, text encodings, CLI options, embedded media, and division into sections and chunks. * Classic custom writers are deprecated. The global variables `PANDOC_DOCUMENT` and `PANDOC_WRITER_OPTIONS` are no longer set when the writer script is loaded. Both variables are still set in classic writers before the conversion is started, so they can be used when they are wrapped in functions. A new function `pandoc.write_classic` can be used to convert a classic writer into a new-style writer: see the changelog for an example of its use. * It is now possible to have a custom reader and a custom writer for a format together in the same file. * It is now possible to create a bytestring writer (e.g. one that produces a zip file). * Custom readers and writers can now define the extensions that they support via the global `writer_extensions`. * Custom writers can define a default template via a global `Template` function; the data directory is no longer searched for a default template. See the changelog for instructions on restoring the old behavior. API changes ----------- * pandoc-server, pandoc-cli, and pandoc-lua-engine have been split off into separate packages (#8309). It is possible to compile pandoc without Lua or server support, using cabal flags. * New module Text.Pandoc.Writers.ChunkedHTML. * Rename Text.Pandoc.Readers.Odt -> Text.Pandoc.Readers.ODT, for consistency with Writers.ODT. Rename readOdt -> readODT. * Rename Text.Pandoc.Writers.Docbook -> Text.Pandoc.Writers.DocBook. Rename writeDocbook -> writeDocBook, for consistency with the DocBook reader's naming. =20 * Text.Pandoc.App: + parseOptionsFromArgs and parseOptions now return Either OptInfo Opt. + Add OptInfo type. + Add handleOptInfo function. + convertWithOpts: add argument for a ScriptingEngine. + New optEpubTitlePage field on Opt. + Remove optEpubChapterLevel, add optSplitLevel. + Export IpynbOutput(..). * New exported module Text.Pandoc.Slides. * New module Text.Pandoc.Format. * Text.Pandoc.Sources: Add UpdateSourcePos instances for String and strict and lazy ByteString. * Text.Pandoc.Extensions: + Fix JSON decoding of Extensions. + Add new exported function readExtension. + Remove parseFormatSpec. This has been moved to Text.Pandoc.Format and renamed as parseFlavoredFormat. + Add CustomExtension constructor to Extension. + Remove Bounded, Enum instances for Extension. + Add extensionsToList function. + Add showExtension. + Add Ext_mark, Ext_tagging, Ext_wikilinks_title_after_pipe, Ext_wikilinks_title_before_pipe constructors for Extension. * Text.Pandoc.XML: Export lookupEntity. * Text.Pandoc.Parsing: + Remove gratuitious renaming of Parsec types. We were exporting Parser, ParserT as synonyms of Parsec, ParsecT. New (re-)exports: Stream(..), updatePosString, SourceName, Parsec, ParsecT. Removed exports: Parser, ParserT + Export errorMessages, messageString. + Export fromParsecError, which can be used to turn a parsec ParseError into a regular PandocParseError. + Remove unused function nested. + Change characterReference, charsInBalanced. characterReference so they now return a Text (some named references don't correspond to a single Char). Use the the lookupEntity function from commonmark-hs instead of the slow one from tagsoup. + charsInBalanced now takes a Text parser rather than a Char parser as argument. * Text.Pandoc.Shared: + Export textToIdentifier. + Remove deprecated crFilter. + Remove deprecated deLink. + Deprecate notElemText. + Deprecate makeMeta. + Remove pandocVersion (now available in Text.Pandoc.Version as pandocVersionText). + Remove findM. + Remove deprecated makeMeta. + Remove ordNub. Use nubOrd from Data.Containers.ListUtils instead. + Remove mapLeft. This is just a synonym for Bifunctor.first. + Remove elemText, notElemText. + Drop export of pandocVersion and pandocVersionText, which are now exported by Text.Pandoc.Version. + Remove escapeURI, isURI. These are now exported by Text.Pandoc.URI. + Use LineBreak as default block sep in blocksToInlines. + defaultUserDataDir is no longer exported (it has been moved to Text.Pandoc.Data). + New function figureDiv, offering offers a standardized way to convert a figure into a Div element. * Text.Pandoc.Writers.Shared: export htmlAddStyle, htmlAlignmentToString, and htmlAttrs. * Text.Pandoc.Options: + WriterOptions now has a field writerListTables. + New writerEpubTitlePage field on WriterOptions. + Remove writerEpubChapterLevel, add writerSplitLevel. * Text.Pandoc.Filter: + Export applyFilters, applyJSONFilter. + Parameterize applyFilters over scripting engine. * New exported module Text.Pandoc.Chunks. This module provides functions to split Pandoc documents into chunks to be rendered in separate files, e.g. one per section. * Text.Pandoc.Readers: change argument type of getReader, so it takes a FlavoredFormat instead of a Text. * Text.Pandoc.Writers: change argument type of getWriter, so it takes a FlavoredFormat instead of a Text. * New exported module Text.Pandoc.Scripting. The module contains the central data structure for scripting engines (e.g., Lua). * Text.Pandoc.Error: + Add new PandocError constructors PandocNoScriptingEngine, PandocFormatError, PandocNoTemplateError. + Remove PandocParsecError constructor. Henceforth we just use PandocParseError. * New module Text.Pandoc.Version, exporting pandocVersionText and pandocVersion. pandocVersion returns a Version instead of a Text. * Text.Pandoc.Class: + Remove exports readDataFile, readDefaultDataFile, setTranslations, and translateTerm. (See Text.Pandoc.Data, Text.Pandoc.Translations for these functions.) + Export checkUserDataDir. * New exported module Text.Pandoc.Class.IO. * Text.Pandoc.Data is now an exported module, providing readDataFile and readDefaultDataFile (both formerly provided by Text.Pandoc.Class), and also getDataFileNames (formerly unexported in Text.Pandoc.App.CommandLineOptions) and defaultUSerDataDir (formerly provided by Text.Pandoc.Shared). * New exported module Text.Pandoc.Translations is now an exported module (along with Text.Pandoc.Translations.Types), providing readTranslations= , getTranslations, setTranslations, translateTerm, lookupTerm, readTranslations, Term(..), and Translations. * Text.Pandoc now exports Text.Pandoc.Data and setTranslations and translateTerm. * Remove modules Text.Pandoc.Writers.Custom and Text.Pandoc.Readers.Custom. The functions writeCustom and readCustom are available from module Text.Pandoc.Lua. * Text.Pandoc.Server is now in a separate package, pandoc-server. parseServerOpts has been removed. * Text.Pandoc.Lua is now in a separate package, pandoc-lua-engine. + Export applyFilter, readCustom, and writeCustom. + No longer export the lower-level function runFilterFile. + Change type of applyFilter: applyFilter :: (PandocMonad m, MonadIO m) =3D> Environment-> [String]-> FilePath-> Pandoc-> m P= andoc where Environment is defined in Text.Pandoc.Filter.Environment. + Export new function getEngine. + The writeCustom function has changed to return a Writer and an ExtensionsConfig. This allows ByteString writers to be defined. + The readCustom function has changed to return a Reader and an ExtensionsConfig. --- For a full accounting of the many changes and bug fixes in this release, see the changelog. Thanks to all who contributed, including Akos Marton, Albert Krewinkel, Alexander Batischev, Amar Al-Zubaidi, Amir Dekel, Aner Lucero, Artem Pelenitsyn, Bastien Dumont, Francesco Occhipinti, Ian Max Andolina, Ilona, Jeremie Knuesel, Justin Wood, Link Swanson, Marcin Serwin, Mathias Walter, Olivier Benz, Pranesh Prakash, Prat, R. N. West, Ruqi, Siphalor, Sven Wick, Terence Eden, TomBen, Vladimir Alexiev, William Rusnack, Wout Gevaert, lifeunleaded, nbehrnd, and vkraven. --=20 You received this message because you are subscribed to the Google Groups "= pandoc-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/= pandoc-discuss/D8E55C6D-E01C-45D5-A9CA-7CAE87AE6AFF%40berkeley.edu.