Tram boxes are highlighted with patterns of dots; the package
defines an environment tram that typesets its content into a
tram box. The pattern used may be selected in an optional
argument to the environment.
In some cursive scripts such as Persian or Arabic, kashida is
used to create justification. In this type of justification
characters are elongated rather than expanding spaces between
words. The kashida justification in xepersian has many bugs.
Also it has problems with some fonts. The xepersian-hm package
was the first attempt to fix these bugs in xepersian, which
uses the XeTeX engine. This package extends the kashida
justification to be used with the LuaTeX engine, too.
Explanation of the package name: Negar, in Persian, is the
present stem of negaashtan meaning to design, to paint, to
write; and as a noun it means "sweetheart, idol, beloved,
figuratively referring to a beautiful woman, pattern, painting,
and artistic design".
The package allows the definition of \verb variants which add
TeX code before and after the verbatim text (e.g., quotes or
surrounding \fbox{}). When used together with the shortvrb
package it allows the definition of short verbatim characters
which use this package's variant instead of the normal \verb.
In addition, it is possible to collect an argument verbatim to
either typeset or write it into a file. The \Verbdef command
defines verbatim text to a macro which can later be used to
write the verbatim text to a file.
The package provides an automatic and unified interface for
Parsi typesetting in LaTeX, using the LuaTeX engine. The
project to produce this system is dedicated to Ferdowsi The
Great.
This package provides for LuaLaTeX an ArabTeX-like interface to
generate Arabic writing from an ascii transliteration. It is
particularly well-suited for complex documents such as
technical documents or critical editions where a lot of
left-to-right commands intertwine with Arabic writing.
arabluatex is able to process any ArabTeX input notation. Its
output can be set in the same modes of vocalization as ArabTeX,
or in different roman transliterations. It further allows many
typographical refinements. It will eventually interact with
some other packages yet to come to produce from .tex source
files, in addition to printed books, TEI xml compliant critical
editions and/or lexicons that can be searched, analyzed and
correlated in various ways.
This package provides underlining, strikethough, and
highlighting using features in LuaLaTeX which avoid the
restrictions imposed by other methods. In particular, kerning
is not affected, the underlined text can use arbitrary
commands, hyphenation works etc. The package requires LuaTeX
version 1.12.0.
The name is by way of being an acronym for "Yet Another Grand
Unified Symbols Loader"... The package allows the user to
access a symbol without loading the package that usually
provides it; this has the advantage of avoiding the name
clashes that so commonly trouble those who load
symbol-packages.
The package provides the following new enumerate styles: \greek
for lowercase Greek letters; \Greek for uppercase Greek
letters; \enumHex for uppercase hexadecimal enumeration;
\enumhex for lowercase hexadecimal enumeration; \enumbinary for
binary enumeration; \enumoctal for octal enumeration; \levelnth
for "1st", "2nd", "3rd" etc., with the "nth"s on the baseline;
raisenth for "1st", "2nd", "3rd" etc., with the "nth"s raised;
\nthwords for "first", "second", "third" etc.; \Nthwords for
"First", "Second", "Third" etc.; \NTHWORDS for "FIRST",
"SECOND", "THIRD" etc.; \nwords for "one", "two", "three" etc.;
\Nwords for "One", "Two", "Three" etc.; and \NWORDS for "ONE",
"TWO", "THREE" etc. Each of these works with enumitem's
"starred variant" feature. So
\begin{enumerate}[label=\enumhex*] will output a hex enumerated
list. Enumitem provides a start=0 option for starting your
enumerations at 0.
Currently 9 files: acm-fa.bst, asa-fa.bst, chicago-fa.bst,
ieeetr-fa.bst, plain-fa-inLTR-beamer.bst, plain-fa-inLTR.bst,
plain-fa.bst, plainnat-fa.bst and unsrt-fa.bst are modified for
Persian documents prepared with XePersian (which the present
package depends on). The Persian .bst files can simultaneously
handle both Latin and Persian references. A file cp1256fa.csf
is provided for correct sorting of Persian references and three
fields LANGUAGE, TRANSLATOR and AUTHORFA are defined.
This is a modified version of the pas-cours package made
compatible with XeLaTeX/polyglossia to write arabic documents
with fancy boxed theorem-alike environments.
This package provides lipsum-like facilities for the Kurdish
language. The package gives you easy access to the Kurdish
poetry and balladry texts of the Diwany Vafaiy, Ahmedy Xani,
Naly, Mahwy,.... The package needs to be run under XeLaTeX.
This package provides some macros for right-to-left
typesetting. It uses by default the arabic fonts Scheherazade
and ALM fixed, the only monospaced arabic font. The package
works with LuaLaTeX or XeLaTeX, but not with pdfLaTeX or latex.
The package defines a command \darghab that will typeset its
argument in a box with a decorated frame. The width of the box
may be set using an optional argument.
This package allows simple typesetting in Arabic script,
intended for mixed Arabic/Latin script usage in situations
where heavy-duty solutions are discouraged. The system operates
with both Unicode and transliterated input, allowing the user
to choose the most appropriate approach for every situation.
This document class provides both Arabic and English support
for TeX/LaTeX. Input may be in ASCII transliteration or other
encodings (including UTF-8), and output may be Arabic, Hebrew,
or any of several languages that use the Arabic script, as can
be specified by the polyglossia package. The Arabic font is
presently available in any Arabic fonts style. In order to use
Amiri font style, the user needs to install the amiri package.
This document class runs with the XeTeX engine. PDF files
generated using this class can be searched, and text can be
copied from them and pasted elsewhere.
This package takes advantage of some of the possibilities that
hyperref and bookmark packages offer when you create a table of
contents for Arabic texts created by the arabi package.
The package provides a Persian version of the alpha BibTeX
style and offers several enhancements. It is compatible with
the hyperref, url, natbib, and cite packages.
This package contains the documentation.
The package provides a Persian version of the alpha BibTeX
style and offers several enhancements. It is compatible with
the hyperref, url, natbib, and cite packages.
The package changed with the addition of its libepoll-shim dependency.
Otherwise, we can get:
ERROR: libepoll-shim>=0.0.20210418 is not installed; can't buildlink files.
[4.2.1] - 05.08.2022
Fixed
Deserialize server options with missing keys (or not keys at all) correctly (#707)
Pass chktexrc files if they are not in the current directory (#683)
Revert back to server-side file watching due to lack of client support (#679)
Changes:
1.20.0
------
Experimental C# bindings.
Cross compilation should no longer need a host compiler.
Major additions to JNI bindings.
New API to edit outline
New API to resolve and create links
New API to toggle individual layers in PDF
Layer panel in mupdf-gl
Layer option in mutool draw
New API to add a Javascript console
Console panel in mupdf-gl
Text search API extended to be able to distinguish between separate
search hits.
Command line tool improvements:
all: Negative page numbers to index from the last page
mutool draw: Add option to render document without text
mutool draw and convert: Support DPI option in text and HTML output
New hybrid HTML output format using "scripts/pdftohtml" script:
Graphics in a background image
Text on top
Improved WASM viewer demo
Support high DPI screens
Progressive loading
Update to zlib 1.2.12 for security fix.
Release 22.07.0:
core:
* Fix crash when filling in forms in some files. Issue #1258
* Fix first lines of Annotations sometimes being cut off. Issue #1246
* Signatures: Don't crash if the signature doesn't have a common name
* CairoFontEngine: increment font_face reference when retrieving from the cache
* Add ToUnicode support for lessorequalslant and greaterorequalslant
glib:
* Add support for stamp annotation
build system:
* Tweaks on how gperf is run
Release 22.06.0:
core:
* Forms: Fix crash in forms with their own DR
* Refactor CairoFontEngine caching
* CairoOutputDev: preserve text color when drawing type 3 glyphs
* Windows: font code simplification
* Minor code improvements
cpp:
* Add missing header
utils:
* pdfattach: Assume filename is utf8 encoded
* pdftohtml: Fix type 3 font size calculation
Release 22.05.0:
core:
* Annotations: Make sure we embed fonts for the FreeText annots
* Forms: Make sure we embedd fonts as needed
* Signatures: Make sure we embed the needed fonts
* CairoOutputDev: color type 3 fonts
* fix two bugs in multiline find_text()
* code improvements
utils:
* pdftotext: added TSV mode
* HtmlOutputDev: don't use png.h
cpp:
* Use time_t for time
* Add page_transition::durationReal
qt:
* Pass leftFontSize down to `FormWidgetSignature::signDocumentWithAppearence`
Changes in CUPS v2.4.2 (26th May 2022)
--------------------------------------
- Fixed certificate strings comparison for Local authorization (CVE-2022-26691)
- The `cupsFileOpen` function no longer opens files for append in read-write
mode (Issue #291)
- The cupsd daemon removed processing temporary queue (Issue #364)
- Fixed delay in IPP backend if GNUTLS is used and endpoint doesn't confirm
closing the connection (Issue #365)
- Fixed conditional jump based on uninitialized value in cups/ppd.c (Issue #329)
- Fixed CSS related issues in CUPS Web UI (Issue #344)
- Fixed copyright in CUPS Web UI trailer template (Issue #346)
- mDNS hostname in device uri is not resolved when installaling a permanent
IPP Everywhere queue (Issues #340, #343)
- The `lpstat` command now reports when the scheduler is not running
(Issue #352)
- Updated the man pages concerning the `-h` option (Issue #357)
- Re-added LibreSSL/OpenSSL support (Issue #362)
- Updated the Solaris smf service file (Issue #368)
- Fixed a regression in lpoptions option support (Issue #370)
- The scheduler now regenerates the PPD cache information after changing the
"cupsd.conf" file (Issue #371)
- Updated the scheduler to set "auth-info-required" to "username,password" if a
backend reports it needs authentication info but doesn't set a method for
authentication (Issue #373)
- Updated the configure script to look for the OpenSSL library the old way if
pkg-config is not available (Issue #375)
- Fixed the prototype for the `httpWriteResponse` function (Issue #380)
- Brought back minimal AIX support (Issue #389)
- `cupsGetResponse` did not always set the last error.
- Fixed a number of old references to the Apple CUPS web page.
- Restored the default/generic printer icon file for the web interface.
- Removed old stylesheet classes that are no longer used by the web
interface.
As of 3.5, GNU grep changed so by default, "The message that a binary
file matches is now sent to standard error", which broke the
expectations of the configure script, which was calling grep on font
files without using -a or equivalent options. If we change to use -a,
this will break non-GNU grep implementations that don't have it, so
also universally require GNU grep for consistency/simplicity.
We should be fine here, as -a was added to GNU grep 2.4.1 back twenty
years ago and pkgsrc sets 2.5.1 as its minimum tool version if building
it itself.
(Really this package should be updated to a newer stable release branch
but I don't have time right now.)
This package switched to GPL v3 in 2009, so it's evidently been wrong
for a while in pkgsrc. There are two other main licenses specified for
documentation and fonts, too.
9.56.1
New PDF Interpreter is now enabled by default: See Changes Coming to the PDF Interpreter
libgs is now threadsafe
The PSD output devices now write ICC profiles to their output files for improved color fidelity.
Ghostscript/GhostPDL can now output Apple Raster and URF format image files: via the "appleraster" or "urf" output devices (using the cups implementation of those formats).
Version 55.0
------------
Released on 2022-05-12.
This version also includes the changes from unstable b1 version listed
below.
Bug fixes:
* Fix the vertical position and available height of absolute boxes
* Minor fixes for multi-column layout
* Don’t stop rendering SVG when CSS parsing fails
* Fix sequential footnotes that could disappear when overflowing
* Fix position of absolute boxes with right-to-left direction
* Fix relative paths for SVG files stored as data URLs
Version 55.0b1
--------------
Released on 2022-04-15.
**This version is experimental, don't use it in production. If you find bugs,
please report them!**
Dependencies:
* Python 3.7+ is now needed, Python 3.6 is not supported anymore
Features:
* Support ``word-break: break-all``
* Support column breaks
* Allow reproducible PDF generation
Bug fixes:
* Handle ``inherit`` in shorthand properties
* Space out no-repeat patterns
* Avoid invalid PDF operators when drawing SVG text
* Don’t output footnotes before their call sites
* Prevent infinite loops in multi-column layout
* Fix position of absolute boxes in right-to-left contexts
* Draw borders around absolute replaced boxes
* Fix skip stacks for columns
* Better support of nested ``text-decoration`` properties
* Fix absolute blocks in lines
* Clear adjoining margins when a container’s child doesn’t fit
Performance:
* Improve tests speed
* Improve fonts management
* Improve column layout speed
* Cache ``ch`` and ``ex`` units calculations
Version 54.3
------------
Released on 2022-04-04.
Bug fixes:
* Support position: absolute in footnotes
* Fix discarded text-align values
Version 54.2
------------
Released on 2022-02-27.
Bug fixes:
* Always store parent blocks children as lists
* Fix float rounding errors
* Ignore unknown glyphs
* Fix line break when breaks occur between a nbsp and an inline block
* Always set the child index
* Fix patterns with use tags
Version 54.1
------------
Released on 2022-01-31.
Features:
* Handle break-inside: avoid on tr tags
Bug fixes:
* Handle absolute children in running elements
* Handle invalid values in text-align
* Handle absolute flex boxes
Version 54.0
------------
Released on 2022-01-08.
This version also includes the changes from unstable b1 version listed
below.
Bug fixes:
* Always use absolute paths to get hrefs in SVG
* Fix many rendering problems of broken tables
* Fix support of fonts with SVG emojis
Version 54.0b1
--------------
Released on 2021-12-13.
**This version is experimental, don't use it in production. If you find bugs,
please report them!**
Dependencies:
* html5lib 1.1+ is now needed.
New features:
* Support footnotes, with financial support from Code & Co.
* Handle parallel flows for floats, absolutes, table-cells
* Support ``text-align-last`` and ``text-align-all`` properties
* Draw SVG and PNG emojis
* Support ``overflow-wrap: anywhere``
* Add environment variable to set DLL folder on Windows
Performance:
* Cache SVG ``use`` tags
* Encode non-JPEG images as PNGs instead of JPEG2000s
Bug fixes:
* Don’t use ``text-transform`` text for content-based uses
* Don’t serialize and parse again inline SVG files
* Correctly handle whitespaces in bookmark labels
* Fix column height with ``column-span`` content
* Fix absolutely positioned boxes in duplicated pages
* Fix ``target-counter`` attribute in flex items
* Don’t draw empty glyphs
* Don’t crash when font size is really small
Documentation:
* Fix typo
Packaging:
* The source package does not include a ``setup.py`` file anymore.
### Added
- allow standard pdf/A-4
- check requirement for max-pdfversion
- add requirement for Info dictionary
- load tagpdf-base if it exists to provide the
tagging commands.
### Fixed
- Support/firstaid for colorspace package
- Support for metadata with hyperxmp and xetex
The code has been completely reorganized. The implementation documentation is
now completely in English and uses the new class koma-script-source-doc. This
class is based on version 3 of the doc package. Partially the order of the code
has changed. Some deprecated code parts have been removed completely, others
generate long overdue warnings.
scrartcl, scrbook, scrreprt:
Non-floating environments table- und figure- are also defined.
scrlttr2, scrletter:
The internal macros \if at plength, \@newplength, \@setplength, and \@addtoplength
are not only deprecated, which has been documented since KOMA-Script 3.25 from
2018/03/30, but also warn. If you haven't already done so, you should use the
user commands \Ifplength, \newplength, \setplength, and \addtoplength instead
urgently now!
CHANGES IN V1.28.15
- pdftops: In pdftops identify old LaserJets more precisely
for working around PostScript interpreter bugs, older
printers need Poppler, newer models need Ghostscript
CHANGES IN V1.28.14
- pdftopdf: Correct the output when suppressing auto-rotation
(option "nopdfAutoRotate"). Depending on the situation pages
got cropped in the wrong orientation or de-centered.
- pdftopdf: Correct the output when the
"orientation-requested" or the "landscape" option is
supplied. Output could be de-centered,
portrait-oriented pages be wrongly cropped and division of
the output page into cells for N-up done in the wrong
orientation.
- rastertopdf: In PCLm output mode the filter failed to
generate PCLm if the printer has no
"pclm-source-resolution-default" IPP attribute.
CHANGES IN V1.28.13
- pdftopdf: Fix N-up printing when paper is taken
long-edge-first by the printer.
- pdftopdf: Fix cropping ("print-scaling=none" and
"print-scaling=fill") when paper is taken long-edge-first by
the printer.
- pdftops: Use Poppler for all Apple LaserWriter models.
CHANGES IN V1.28.12
- imagetoraster, imagetopdf: Fixed comparison of the image
size with the page size for print-scaling=auto. The image
size in pixels was compared with the page size in PostScript
points (1/72 inch).
- imagetoraster, imagetopdf: Fixed the "print-scaling=none"
(crop-to-fit) mode, also use crop-to-fit always when
requested, do not fall back to fit-to-page when the image
size differs significantly from the page size.
- libcupsfilters: Changed the default PPI resolution for
images as input files from 128 to 200.
- implicitclass: Do not check availability of "gs" and
"pdftops" executables, instead, check by the presence of
"gstoraster" and "pdftoraster" filters whether we have
configured cups-filters for Ghostscript and/or Poppler use.
- libcupsfilters: In the PPD generator for the driverless
utility and cups-browsed add "*cupsFilter2: ..." lines for
all supported driverless data formats (PDF, Apple/PWG
Raster, PCLm), and add lines for legacy data formats (PCL,
PostScript) only if no driverless formats available.
- libcupsfilters: Always use encryption for ipps. RFC7472
requires that 'ipps' must be used over HTTPS, but the
driverless utility does not enforce encryption.
- serial: Add a 10-msec sleep and at the end add a tcdrain().
For some unknown reason, every printing file need sleep a
little time to make sure the serial printer receive data is
right.
- libcupsfilters: Fix resolver functions for DNS-SD-based
URIs, to make resolve_uri() also work when DEVICE_URI env
variable is set and to make ippfind_based_uri_converter()
not re-direct stdin.
- pdftopdf: Set default for print-scaling to avoid "should
never happem" log messages and undefined behavior.
- pdftopdf: Fix orientation-requested = 0. Consider
this as "automatic selection and not as error.
- pdftopdf: Fixed all combinations of print-scaling and
number-up for printers with asymmetric margins (top !=
bottom or left != right) and for input files containing
pages with different sizes and/or orientations. Fixes
backported from 2.x branch.
- pdftopdf: Add 2% tolerance for input size larger than output
page when "print-scaling=auto" or "print-scaling=auto-fit"
is used and too large input pages should be scaled, fitting
documents not. This prevents a random-looking behavior if
input and output page size seem to be equal, but in reality
there are slight differences between size dimensions.
CHANGES IN V1.28.11
- libcupsfilters: Let PPD generator take default ColorModel
from printer.
- Braille: In vectortopdf check inkscape version to call
inkscape with the correct command line.
- Build system: Make missing DejaVuSans.ttf non-fatal in
./configure as the font is only needed for test programs,
not for actual use of cups-filters.
- libcupsfilters: In imagetoraster() fixed crash with SGray.
- cups-browsed: Naming of local queues is matched to CUPS'
current naming of temporary queues (no leading or trailing
underscores), to avoid duplicates in print dialogs which
support CUPS' temporary queues.
- libcupsfilters: Make cupsRasterParseIPPOptions() work correctly
with PPDs (Issue #436).
- libcupsfilters: Let colord_get_profile_for_device_id() not
return empty file name, to avoid error messages in CUPS
error_log.
- foomatic-rip: Debug message was wrongly sent to stdout and
not to log
Changes in CUPS v2.4.1 (27th January 2022)
------------------------------------------
- The default color mode now is now configurable and defaults to the printer's
reported default mode
- Configuration script now checks linking for -Wl,-pie flags
- Fixed memory leaks - in testi18n, in `cups_enum_dests()`,
in `_cupsEncodeOption()` and `http_tls_upgrade()`
- Fixed missing bracket in de/index.html
- Fixed typos in configuration scripts
- Removed remaining legacy code for `RIP_MAX_CACHE` environment variable
- Removed deprecated directives from cupsctl and cups-files.conf
- Removed `purge-jobs` legacy code from CGI scripts and templates
Changes in CUPS v2.4.0 (29th November 2021)
-------------------------------------------
- Added configure option --with-idle-exit-timeout
- Added --with-systemd-timeoutstartsec configure option
- DigestOptions now are applied for MD5 Digest authentication defined
by RFC 2069 as well
- Fixed compilation on Solaris
- Fixed and improved German translations
Changes in CUPS v2.4rc1 (12th November 2021)
--------------------------------------------
- Added warning and debug messages when loading printers
if the queue is raw or with driver
- Compilation now uses -fstack-protector-strong if available
Changes in CUPS v2.4b1 (27th October 2021)
------------------------------------------
- Added support for CUPS running in a Snapcraft snap.
- Added basic OAuth 2.0 client support
- Added support for AirPrint and Mopria clients
- Added configure support for specifying systemd dependencies in the CUPS
service file
- Added a JSON output mode for `ipptool`.
- The `ipptool` command now correctly reports an error when a test file cannot
be found.
- CUPS library now uses thread safe `getpwnam_r` and `getpwuid_r` functions
- Fixed Kerberos authentication for the web interface
- The ZPL sample driver now supports more "standard" label sizes
- Fixed reporting of printer instances when enumerating and when no options are
set for the main instance
- Reverted USB read limit enforcement change from CUPS 2.2.12
- The IPP backend did not return the correct status code when a job was canceled
at the printer/server
- The `testlang` unit test program now loops over all of the available locales
by default
- The `cupsfilter` command now shows error messages when options are used
incorrectly
- The PPD functions now treat boolean values as case-insensitive
- Temporary queue names no longer end with an underscore
- The USB backend now runs as root
- Added pkg-config file for libcups
- Fixed a PPD memory leak caused by emulator definitions
- Fixed a `DISPLAY` bug in `ipptool`
- The scheduler now includes the `[Job N]` prefix for job log messages, even
when using syslog logging
- Added support for locales using the GB18030 character set
- `httpReconnect2` did not reset the socket file descriptor when the TLS
negotiation failed
- `httpUpdate` did not reset the socket file descriptor when the TLS
negotiation failed
- The IPP backend now retries Validate-Job requests
- Now show better error messages when a driver interface program fails to
provide a PPD file
- Added dark mode support to the CUPS web interface
- Added a workaround for Solaris in `httpAddrConnect2`
- Fixed an interaction between `--remote-admin` and `--remote-any` for the
`cupsctl` command
- Now use a 60 second timeout for reading USB backchannel data
- The USB backend now tries harder to find a serial number
- Fixed `@IF(name)` handling in `cupsd.conf`
- Fixed documentation and added examples for CUPS' limited CGI support
- Fixed the `lpc` command prompt
- Now always pass "localhost" in the `Host:` header when talking over a domain
socket or the loopback interface
- Fixed a job history update issue in the scheduler
- Fixed `job-pages-per-set` value for duplex print jobs.
- Fixed an edge case in `ippReadIO` to make sure that only complete attributes
and values are retained on an error
- Hardened `ippReadIO` to prevent invalid IPP messages from being propagated
- The scheduler now supports the "everywhere" model directly
- Fixed some IPP Everywhere option mapping problems
- Fixed support for "job-hold-until" with the Restart-Job operation
- Fixed the default color/grayscale presets for IPP Everywhere PPDs
- Fixed support for the 'offline-report' state for all USB backends
- Documentation fixes
- Localization updates
- USB quirk updates
- Web interface updates
- The `ippeveprinter` tool now automatically uses an available port.
- Fixed several Windows TLS and hashing issues.
- Deprecated cups-config
- Deprecated Kerberos (`AuthType Negotiate`) authentication
- Removed support for the (long deprecated and unused) `FontPath`,
`ListenBackLog`, `LPDConfigFile`, `KeepAliveTimeout`, `RIPCache`, and
`SMBConfigFile` directives in `cupsd.conf` and `cups-files.conf`.
- Stubbed out deprecated `httpMD5` functions.
- Add test for undefined page ranges during printing.
Release 22.04.0:
core:
* Fix underline sometimes being drawn only partially
* Fix Adobe Reader not reading some of the contents we write correctly
* Fix code that workarounds some broken-ish files
* FoFiTrueType: Parse CFF2 fonts too
* FoFiTrueType: Support cmap types 2 and 13
* Fix a few small memory leaks
* code improvements
qt:
* Handle SaveAs named action
* Annotations: don't change the text color when changing the font
utils:
* pdftotext: print creation and modification date when using htmlmeta param
glib:
* Fix returning internal data of temporary strings
cpp:
* Fix code incompatibility with MSVC
build system:
* poppler internal library is no longer forced to static on MSVC
* Error out if iconv is not available and the cpp frontend is enabled
* Require FreeType 2.8
knitr 1.38
-------------------------------------------------------
NEW FEATURES
* The chunk option file can take a vector of file paths now, i.e., this
option can be used to read more than one file (e.g., file = c("foo.R",
"bar.R").
* Added a new engine named exec (#2073) to execute an arbitrary command on
the code chunk, e.g.,
```{exec, command='Rscript'}
1 + 1
```
The above code chunk executes the Rscript command with the chunk body as
its input (which basically means executing the R code in a new R session).
See the example #124 in the repo https://github.com/yihui/knitr-examples
for more info.
There exists several command-based engines in knitr, such as awk, bash,
perl, go, and dot, etc. This new exec engine provides a general mechanism
to execute any command that users provide. For example, the code chunk
```{bash}
echo 'Hello world!'
```
is equivalent to the chunk using the exec engine and the bash command:
```{exec, command='bash'}
echo 'Hello world!'
```
With this new engine, we no longer need to provide or maintain other simple
command-based engines. For example, to support TypeScript (#1833), we only
need to specify command = 'ts-node' with the exec engine.
If the command has significant side-effects (e.g., compile source code to
an executable and run the executable, or generate plots to be included in
the output), it is also possible to create a new engine based on the exec
engine. The example #124 in the knitr-examples repo has provided a gcc
example.
We'd like to thank @TianyiShi2001 for the inspiration (#1829#1823#1833).
* Added a new engine ditaa based on the exec engine to convert ASCII art
diagrams to bitmaps via the ditaa command (thanks, @kondziu, #2092).
* Added two new chunk options, class.chunk and attr.chunk, for R Markdown
output. These options can enclose the whole chunk output (source and
results) in a fenced Div. Their syntax follows other chunk options with the
similar names class.* and attr.* (e.g., class.source and attr.source). For
example, class.chunk = "foo" would wrap the chunk output inside ::: {.foo}
and ::: (thanks, @atusy, #2099).
* Added a new chunk option lang to set the language name of a code chunk. By
default, the language name is the engine name. This is primarily useful for
syntax highlighting the source chunks in Markdown-based output. Previously
the lang option was only available to a few engines such as verbatim and
embed. Now it is available to all engines.
* Added a new wrapper function rnw2pdf(). It allows users to specify an
arbitrary output file path, clean the intermediate files, and stop when any
error occurs in knitting (thanks, @shrektan, #2113).
* New calling.handlers option for opts_chunk$set() to register calling
handlers within chunks. See ?evaluate::new_output_handler for details.
MAJOR CHANGES
* The minimal required version of R was bumped from 3.2.3 to 3.3.0 (thanks,
@essemenoff, #2100).
* The working directory under which chunk options are evaluated has been
changed to the directory of the source document by default. If the package
option root.dir is set to a different directory, that directory will be
used as the working directory (#2081).
* include_graphics() will expand ~ in the image paths now and also warn
against absolute paths (thanks, @kcarnold, #2063).
* opts_chunk$set() returns values of old chunk options after setting new
chunk options now, instead of returning NULL, which can make it a little
simpler to reset chunk options, e.g., you can temporarily change a few
chunk options and save them with old = opts_chunk$set(error = FALSE,
fig.height = 3), and reset them later with opts_chunk$set(old). This works
for any other objects in knitr that have the $set() methods, such as
opts_knit, opts_hooks, knit_hooks, knit_engines, and so on.
MINOR CHANGES
* The chunk option fig.scap has been added to eval.after in opts_knit
(thanks, @knokknok, #2061).
BUG FIXES
* Chunk options defined in the #| style are not recognized when the code
chunk is indented or quoted (thanks, @mine-cetinkaya-rundel, #2086).
* Fixed a bug in Sweave2knitr() #2097 (thanks, @chroetz).
knitr 1.37
----------------------------------------------------------------
NEW FEATURES
* Added a new chunk option named file so that the chunk content can be read
from an external file. Setting the chunk option file = "test.R" is
equivalent to using the chunk option code = xfun::read_utf8("test.R").
* For R Markdown documents, code chunks can be embedded in a parent code
chunk with more backticks now. For example, a code chunk with four
backticks can contain code chunks with three backticks. One application is
to conditionally include some verbatim content that contains code chunks
via the asis engine, e.g.,
````{asis, echo=format(Sys.Date(), "%w") == 1}
Some conditional content only included when report is built on a Monday
```{r}
1 + 1
```
On another day, this content won't be included.
````
Note that the embedded child code chunks (e.g., in the asis chunk above)
are not parsed or evaluated by knitr, and only the top-level code chunk is
parsed and evaluated.
* Added a new engine named comment to comment out content, e.g.,
````{comment}
Arbitrary content to be commented out.
```{r}
1 + 1
```
The above code chunk will not be executed.
Inline code like `r pi * 5^2` will be ignored, too.
````
Note that if any line of the content to be commented out contains N
backticks, you will have to use at least N + 1 backticks in the chunk
header and footer of the comment chunk.
* Added a new engine named verbatim mainly for R Markdown documents to output
verbatim content that contains code chunks and/or inline expressions, e.g.,
````{verbatim}
We can output arbitrary content verbatim.
```{r}
1 + 1
```
The content can contain inline code like
`r pi * 5^2`, too.
````
By default, the verbatim content is placed in a fenced default code block:
````default
We can output arbitrary content verbatim.
```{r}
1 + 1
```
The content can contain inline code like
`r pi * 5^2`, too.
````
You can change the default language name of the block via the chunk option
lang, e.g., lang = 'markdown' will output a code block like this:
````markdown
We can output arbitrary content verbatim.
```{r}
1 + 1
```
The content can contain inline code like
`r pi * 5^2`, too.
````
To disable the language name on the block, use an empty string lang = ''.
The difference between the verbatim and asis engine is that the former will
put the content in a fenced code block, and the latter just output the
content as-is.
You can also display a file verbatim by using the chunk option file, e.g.,
```{verbatim, file="test.Rmd"}
```
This engine also works for other types of documents (e.g., Rnw) but it will
not allow for nested code chunks within the verbatim code chunk.
* Added a new engine named embed to embed external plain-text files. It is
essentially a simple wrapper based on the verbatim engine, with the chunk
content read from an external file and default language guessed from file
extension. That is,
```{embed, file="foo.R"}
```
is equivalent to
```{verbatim, file="foo.R", lang="r"}
```
If you provide the chunk option file to the embed engine, it will read the
file and show its content verbatim in the output document. Alternatively,
you can specify the file path in the chunk body, e.g.,
```{embed}
"foo.txt"
```
The quotes are optional but can be helpful for editors (e.g., RStudio IDE)
to autocomplete the file paths.
The syntax highlighting language name is from the filename extension by
default, and you can override it with the chunk option lang (e.g., file =
"foo.sh", lang = "bash") which is then identical to the verbatim engine.
BUG FIXES
* The chunk option child also respects the package option root.dir now
(thanks, @salim-b, https://community.rstudio.com/t/117563).
* Fixed a LaTeX error "Package xcolor Error: Undefined color `fgcolor'" with
.Rnw documents (thanks, Kurt Hornik).
MINOR CHANGES
* Improved the (warning) message when unbalanced chunk delimiters are
detected in R Markdown documents, to make it easier for users to fix the
problem. The message now contains the line numbers of the opening fence and
closing fence, as well as the opening and closing backticks. For example,
the opening fence may be "````{r}" (four backticks) but the closing fence
is "```" (three backticks---should also be four to match the opening
fence), or the opening fence is indented " ```{r}" but the closing fence is
not "```". Note that this warning message may become an error in the
future, i.e., unbalanced chunk delimiters will no longer be allowed.
knitr 1.36
-----------------------------------------------
MAJOR CHANGES
* In knitr 1.35, if the indentation of the closing backticks does not match
the indentation of the chunk header in an Rmd document, the closing
backticks would not be treated as closing fence of a code chunk. This
behavior has been reverted because we have discovered several cases in
which the indentation was accidental. A warning message will be issued
instead, and you are still recommended to fix the improper indentation if
discovered.
BUG FIXES
* Fixed a regression in knitr 1.31 that caused package vignettes to generate
(tangle) invalid R scripts (thanks, @t-kalinowski @halldc, #2052).
knitr 1.35
-------------------------------------------------
NEW FEATURES
* Chunk options can also be written inside a code chunk now after the special
comment #|, e.g.,
```{r}
#| echo = FALSE, fig.width = 10,
#| fig.cap = "This is a long caption."
plot(cars)
```
The main differences between this new syntax and traditional syntax (i.e.,
chunk options in the chunk header) are: 1) the chunk options can be freely
wrapped, i.e., you can write them on as many lines as you prefer; 2) you
can also use the YAML syntax instead of the comma-separated syntax if you
like, e.g.,
```{r}
#| echo: false
#| fig.width: 10
```
Chunk options provided inside a code chunk will override options with the
same names in the chunk header if chunk options are provided in both
places, e.g.,
```{r, echo = TRUE}
#| echo = FALSE, fig.width = 10
```
The effective chunk options for the above chunk are echo = FALSE and
fig.width = 10.
MAJOR CHANGES
* For R Markdown documents, if the chunk header is indented, the closing
backticks (usually ```) of the chunk must be indented with the same amount
of spaces (thanks, @atusy, #2047). For example, the following is no longer
a valid code chunk because the chunk header is indented but the closing
backticks are not:
```{r}
1 + 1
```
If you see an error "attempt to use zero-length variable name" when
knitting an Rmd document, it may be because of this change, and you may
have indented the chunk header by accident. If that is the case, you need
to remove the extra white spaces before the chunk header.
The same problem applies to blockquotes, i.e., > before ```. If you quote
the chunk header, you have to quote the footer as well, e.g.,
> ```{r}
1 + 1
```
The above unbalanced code chunk needs to be corrected to:
> ```{r}
> 1 + 1
> ```
Quoting the chunk body is optional but recommended.
BUG FIXES
* Fixed a regression in v1.34: now blank lines in code chunks are stripped
only when collapse = FALSE but no longer stripped by default when collapse
= TRUE. If you prefer blank lines to be always stripped, set strip.white =
TRUE globally or on the per chunk basis (thanks, @IndrajeetPatil, rstudio/
rmarkdown#2220, #2046).
* In knitr::combine_words(), when words is length 2 and and = "", sep will
now be used (thanks, @eitsupi, #2044).
* For R Markdown documents, if the chunk output contains N backticks, the
output hook will use N + 1 backticks to wrap the output, so that the N
verbatim backticks can be correctly preserved (thanks, @atusy, #2047).
This package provides a German localization to the termcal
package written by Bill Mitchell, which is intended to print a
term calendar for use in planning a class.
This package is intended to print a term calendar for use in
planning a class. It has a flexible mechanism for specifying
which days of the week are to be included and for inserting
text either regularly on the same day each week, or on selected
days, or for a series of consecutive days. It also has a
flexible mechanism for specifing class and nonclass days. Text
may be inserted into consecutive days so that it automatically
flows around nonclass days.
This package offers the user an easy way to typeset The Holy
Quran. It has been inspired by the lipsum and ptext packages
and provides several macros for typesetting the whole or any
part of the Quran based on its popular division, including
surah, ayah, juz, hizb, quarter, and page. Besides the Arabic
original, translations to English, German, French, and Persian
are provided, as well as an English transliteration.
A convenient interface for typesetting bidirectional texts with
plain TeX and LaTeX. The package includes adaptations for use
with many other commonly-used packages.
This package provides a Hangul transliteration input method
that allows to typeset Korean letters (Hangul) using the proper
fonts. The name is derived from "Poor man's Hangul Jamo Input
Method". The use of XeLaTeX is recommended. pdfTeX is not
supported.