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.
This is a polish version of the classic pseudo-Latin "lorem
ipsum dolor sit amet...". It provides access to several
paragraphs of pseudo-Polish generated with Hidden Markov Models
and Recurrent Neural Networks trained on a corpus of Polish.
Draws a representation of the layout of the current page and
displays the sizes of the widths and heights of the margins,
header, footer and text body.
The module parses an ini-file and prints the contents with a
user-defined layout. The entries of the file may be sorted by
up to three sort keys. The format of a simple ini-file would
be: [key1] symbol1 = value1 symbol2 = value2 [key2] symbol1 =
value3 symbol2 = value4 The module only works with ConTeXt
MkIV, and uses Lua to help process the input.
This package provides an elegant layout designed in homage to
Bringhurst's "The Elements of Typographic Style". It makes use
of a range of techniques to get the best results achievable
using TeX. Included in the bundle are templates to make thesis
writing easier.
The package arranges that equation numbers are applied only to
those equations that are referenced. This operation is similar
to the showonlyrefs option of the package mathtools.
The package may be used for testing hyphenation patterns or for
controlling that specific words are hyphenated as expected.
This package implements some old TUGboat code to adapt it to
LaTeX with some enhancements. It differs form \showhyphens,
because it typesets its output on the document's output file.
It also works with xelatex, where \showhyphens requires a
workaround.
The package allows typesetting of texts with notes, figures,
citations, captions and tables in the margin. This is common
(for example) in science text books.
The package provides four commands for vertically scaling and
stretching objects. Its primary function is the ability to
scale/stretch and shift one object to conform to the size of a
specified second object. This feature can be useful in both
equations and schematic diagrams. Additionally, the scaling and
stretching commands offer constraints on maximum width and/or
minimum aspect ratio, which are often used to preserve
legibility or for the sake of general appearance.
Puts text below the normal page content (the default text marks
the document as draft and puts a timestamp on it). Can be used
together with e.g. the vrsion, rcs and rcsinfo packages. Uses
the everyshi package and can use the scrtime package from the
koma-script bundle.
The package aims to solve the error "No room for a new \write",
which occurs when the user, or when the user's packages have
'allocated too many streams' using \newwrite (TeX has a fixed
maximum number - 16 - such streams built-in to its code). The
package hooks into TeX primitive commands associated with
writing to files; it should be loaded near the beginning of the
sequence of loading packages for a document.
LaTeX can, by default, only cope with 18 outstanding floats;
any more, and you get the error "too many unprocessed floats".
This package releases the limit; TeX itself imposes limits
(which are independent of the help offered by e-TeX). However,
if your floats can't be placed anywhere, extending the number
of floats merely delays the arrival of the inevitable error
message.
Authors using LaTeX to typeset books with significant margin
material often run into the problem of long notes running off
the bottom of the page. A typical workaround is to insert
\vshift commands by hand, but this is a tedious process that is
invalidated when pagination changes. Another workaround is
memoir's \sidebar function, but this can be unsatisfying for
short textual notes, and standard marginpars cannot be mixed
with sidebars. This package implements a solution to make
marginpars "just work" by keeping a list of floating inserts
and arranging them intelligently in the output routine.
The package enables the user to produce and typeset one or more
indexes simultaneously with a document. The package is known to
work in LaTeX documents processed with pdfLaTeX, XeLaTeX and
LuaLaTeX. If makeindex is used for processing the index
entries, no particular setting up is needed when TeX Live is
used. Using xindy or other programs it is necessary to enable
shell escape; shell escape is also needed if splitindex is
used.
The package facilitates wrapping text to a specific character
width, breaking lines by words rather than, as done by TeX, by
characters. The primary use for these facilities is to aid the
generation of messages sent to the log file or console output
to display messages to the user. Package authors may also find
this useful when writing out arbitary text to an external file.
The package provides the means of creating hyperlinks, from a
footnote at the bottom of the page, back to the occurence of
the footnote in the main text.
The floatrow package provides many ways to customize layouts of
floating environments and has code to cooperate with the
caption 3.x package. The package offers mechanisms to put
floats side by side, and to put the caption beside its float.
The floatrow settings could be expanded to the floats created
by packages rotating, wrapfig, subfig (in the case of rows of
subfloats), and longtable.
The package provides many (purely expandable) tools for LaTeX:
Extensive list management (csv lists, lists of single
tokens/characters, etoolbox lists); purely expandable loops
(csvloop, forcsvloop, etc.); conversion (csvtolist, etc.));
addition/deletion (csvadd, listdel, etc.); Expansion and group
control: \expandnext, \ExpandAfterCmds, \AfterGroup...; Tests
on tokens, characters and control sequences (\iffirstchar,
\ifiscs, \ifdefcount, \@ifchar...); Tests on strings
(\ifstrnum, \ifuppercase, \DeclareStringFilter...); Purely
expandable macros with options (\FE@testopt, \FE@ifstar) or
modifiers (\FE@modifiers); Some purely expandable numerics
(\interval, \locinterplin).
You can hyperlink DOI numbers to doi.org. However, some
publishers have elected to use nasty characters in their DOI
numbering scheme ('<', '>', '_' and ';' have all been spotted).
This will either upset (La)TeX, or your PDF reader. This
package contains a single user-level command \doi{}, which
takes a DOI number, and creates a correct hyperlink to the
target of the DOI.
An extension of TeX which generates HINT output. The HINT file
format is an alternative to the DVI and PDF formats which was
designed specifically for on-screen reading of documents.
Especially on mobile devices, reading DVI or PDF documents can
be cumbersome. Mobile devices are available in a large variety
of sizes but typically are not large enough to display
documents formated for a4/letter-size paper. To compensate for
the limitations of a small screen, users are used to
alternating between landscape (few long lines) and portrait
(more short lines) mode. The HINT format supports variable and
varying screen sizes, leveraging the ability of TeX to format a
document for nearly-arbitrary values of \hsize and \vsize.