CTAN Comprehensive TeX Archive Network

Directory macros/unicodetex/latex/beaulivre

README.md

beaulivre : write you books in a colorful way

New documentations are still being written. For now, only the core code is included in Live 2024 and MiK (old documentations have been removed from the distribution).

beaulivre is a class for typesetting books, which has a colorful design.

Currently, it has native support to Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish typesetting. And it may compile with either XeLaTeX or Lua.

This is part of the colorist class series.

Features

Compared with usual document classes, it has the following features:

  • Several carefully designed styles.
  • Native multilingual support: Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish.
  • In particular, for simplified Chinese, traditional Chinese and Japanese, the fonts of the corresponding glyphs can be automatically switched.
  • Ready-to-use theorem-type environments, with clever referencing supported.
  • Support both the standard and the AMS writing fashion.
  • ... and much more...

Required fonts

The current document class requires the following open-source fonts that are not included in the standard collection:

Improvements to the current font configuration

The code in this section is rather experimental and may constantly get changed. The author uses these lines of code in his daily documents, but since it involves non-free fonts and/or uses complex Lua patches, the code below cannot be integrated into the published version.

If you are willing to use Lua, then the following aspects may help you further improve the current font configuration.

  • If you have the font Palatino Linotype installed, then replacing the default TeXGyrePagellaX using the following code gives you slightly better result:
  •   \directlua
        {
          fonts.handlers.otf.addfeature
            {
              name = "palatino-linotype-fix",
              type = "kern",
              data =
                {
                  ["r"] = { ["ê"] = 120 },
                  ["v"] = { ["ê"] = 180 },
                  ["w"] = { ["ê"] = 180 },
                  ["y"] = { ["ê"] = 180 },
                },
            }
        }
      \setmainfont{Palatino Linotype}
        [
          Numbers = OldStyle ,
          RawFeature = +palatino-linotype-fix
        ]
      
  • If you have the font Palatino Sans LT Pro installed, then replacing the default mathsf font with this gives more pleasant visual effect:
  • \setmathsf{Palatino Sans LT Pro}
    \setmathfont{PalatinoSansLTPro-LightIta}[range=sfit]
    
  • The default configuration for math fonts has some imperfections. The following code helps to improve it. But for this you need to modify the .cls file itself and then maintain your local version of it. Here is how:
    • First, add this definition at the beginning of the font configuration.
    • \ExplSyntaxOff
      % https://tex.stackexchange.com/a/505003
      \def\mathkern@fix@for@lua
        {
          \directlua
            {
              local mathkerns = {
                ["Asana-Math"] = {
                  [0x1D447] = {% T
                    bottomright = {
                      {height=0,kern=-120},
                    },
                  },
                  [0x1D449] = {% V
                    bottomright = {
                      {height=0,kern=-120},
                    },
                  },
                  [0x1D44A] = {% W
                    bottomright = {
                      {height=0,kern=-30},
                    },
                  },
                  [0x1D453] = {% f
                    bottomright = {
                      {height=0,kern=-135},
                    },
                  },
                  [0x1D44F] = {% b
                    topright = {
                      {height=0,kern=75},
                    },
                  },
                },
                ["KpMath-Regular"] = {
                  [0x1D6FD] = {% \beta
                    bottomright = {
                      {height=0,kern=30},
                    },
                  },
                  [0x1D6FF] = {% \delta
                    bottomright = {
                      {height=0,kern=30},
                    },
                  },
                  [0x1D702] = {% \eta
                    bottomright = {
                      {height=0,kern=30},
                    },
                  },
                  [0x1D703] = {% \theta
                    bottomright = {
                      {height=0,kern=10},
                    },
                  },
                  [0x1D714] = {% \omega
                    bottomright = {
                      {height=0,kern=30},
                    },
                  },
                },
              }
              local function initmathkern(tfmdata)
                local values = mathkerns[tfmdata.properties.psname]
                if not values then return end
                for cp, value in next, values do
                  local tcp = type(cp)
                  if tcp == 'string' then
                    cp = tfmdata.resources.unicodes[cp]
                  end
                  local char = tfmdata.characters[cp]
                  if char then
                    local mathkern = char.mathkerns
                    if not mathkern then
                      mathkern = {}
                      char.mathkerns = mathkern
                    end
                    for corner, v in next, value do
                      mathkern[corner] = v
                    end
                  end
                end
              end
              fonts.constructors.newfeatures'otf'.register{
                name = 'mathkern',
                description = 'Overwrite mathkern values',
                initializers = {
                  base = initmathkern,
                },
              }
            }
        }
      \ExplSyntaxOn
      
    • Then, just before \RequirePackage { unicode-math }, add these lines:
    • \sys_if_engine_luatex:T
        {
          \mathkern@fix@for@lua
        }
      
    • Finally, replace \setmathfont { KpMath-Regular.otf } with \setmathfont [ RawFeature = mathkern ] { KpMath-Regular.otf }, and replace
    • \setmathfont { texgyrepagella-math.otf }
        [
          range = { it / { Latin, latin }, bfit / { Latin, latin }, up / num, bfup / num }
        ]
      
    • with
    • \setmathfont [ RawFeature = mathkern ] { Asana-Math.otf }
        [
          range = { it / { Latin, latin }, bfit / { Latin, latin }, up / num, bfup / num }
        ]
      

License

This work is released under the Project Public License, v1.3c or later.

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

beaulivre – Write your books in a colorful way

This package provides a class for typesetting books with a colorful design.

Currently, it has native support for Chinese (both simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish typesetting. It compiles with either XeLaTeX or Lua.

This is part of the colorist class series and depends on colorist.sty from the colorist package.

The package name “beaulivre” is taken from the French words “beau” (= “beautiful”) and “livre” (= “book”).

Packagebeaulivre
Repositoryhttps://github.com/Jinwen-XU/colorist/tree/main/beaulivre
Version 2024-02-20
LicensesThe Project Public License 1.3c
Copyright2021–2024 Jinwen XU
MaintainerJinwen XU
Contained inTeX Live as beaulivre
MiKTeX as beaulivre
TopicsChinese
Class
Book publication
Multi-lingual
Experimental 3
See alsocolorist
...
Guest Book Sitemap Contact Contact Author