CTAN Comprehensive TeX Archive Network

Directory macros/generic/texdimens



Copyright and License

Copyright (c) 2021 Jean-François Burnol

This file is part of the texdimens package distributed (see file LICENSE.md) under the LPPL 1.3c.

Release: 1.1 2021/11/17


Utilities and documentation related to dimensional units, usable:

  • with Plain : \input texdimens
  • with : \usepackage{texdimens}

Development and issue tracking: https://github.com/jfbu/texdimens

Aim of this package

The aim of this package is to provide facilities to express dimensions (or dimension expressions evaluated by \dimexpr) using the various available units, to the extent possible.

Macros of this package (summary)

This package provides expandable macros:

  • \texdimenUU with UU standing for one of pt, bp, cm, mm, in, pc, cc, nc, dd and nd,
  • \texdimenUUup and \texdimenUUdown with UU as above except pt,
  • \texdimenbothincm and relatives,
  • \texdimenbothbpmm and relatives,
  • \texdimenwithunit.

\texdimenbp takes on input some dimension or dimension expression and produces on output a decimal D such that D bp is guaranteed to be the same dimension as the input, if it admits any representation as E bp; else it will be either the closest match from above or from below. For this unit, as well as for nd and dd the difference is at most 1sp. For other units (not pt of course) the distance will usually be larger than 1sp and one does not know if the approximant from the other direction would have been better or worst.

The variants \texdimenbpup and \texdimenbpdown expand slightly less fast than \texdimenbp but they allow to choose the direction of approximation (in absolute value).

The macros associated to the other units have the same descriptions.

\texdimenbothincm, respectively \texdimenbothbpmm, find the largest (in absolute value) dimension not exceeding the input and exactly representable both with the in and cm units, respectively exactly representable both with the bp and mm units.

\texdimenwithunit{<dimen1>}{<dimen2>} produces a decimal D such that D \dimexpr dimen2\relax is parsed by into the same dimension as dimen1 if this is at all possible. If dimen2<1pt all dimensions dimen1 are attainable. If dimen2>1pt not all dimen1 are attainable. If not attainable, the decimal D will ensure a closest match from below or from above but one does not know if the approximation from the other direction is better or worst.

In a sense, this macro divides <dimen1> by <dimen2>, see additional details in the complete macro description.


Thanks to Denis Bitouzé for raising an issue on the 3 tracker which became the initial stimulus for this package.

Thanks to Ruixi Zhang for reviving the above linked-to thread and opening up on the package issue tracker the issue #2 asking to add handling of the ex and em cases. This was done at release 0.99 via the addition of \texdimenwithunit.

Renewed thanks to Ruixi Zhang for analyzing at issue #10 what is at stake into finding dimensions exactly representable both in the bp and mm units. Macros \texdimenbothbpmm and \texdimenbothmmbp now address this (release 1.0).

Download the contents of this package in one zip archive (132.1k).

texdimens – Conversion of dimensions to decimals

Utilities and documentation related to dimensional units, usable both with Plain (\input texdimens) and with (\usepackage{texdimens}).

Bug trackerhttps://github.com/jfbu/texdimens/issues
Version1.1 2021-11-17
LicensesThe Project Public License 1.3c
Copyright2021 Jean-François Burnol
MaintainerJean-François Burnol
Contained inTeX Live as texdimens
MiKTeX as texdimens
Guest Book Sitemap Contact Contact Author