• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

sile-typesetter / sile / 9428435077

08 Jun 2024 11:35AM UTC coverage: 64.56% (-9.9%) from 74.46%
9428435077

push

github

web-flow
Merge pull request #2047 from alerque/end-pars

23 of 46 new or added lines in 5 files covered. (50.0%)

1684 existing lines in 60 files now uncovered.

11145 of 17263 relevant lines covered (64.56%)

4562.45 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/packages/pullquote/init.lua
UNCOV
1
local base = require("packages.base")
×
2

UNCOV
3
local package = pl.class(base)
×
UNCOV
4
package._name = "pullquote"
×
5

6
local typesetMark = function (open, setback, scale, color, mark)
UNCOV
7
   SILE.settings:temporarily(function ()
×
UNCOV
8
      SILE.call("pullquote:mark-font")
×
UNCOV
9
      SILE.call("raise", { height = -(open and (scale + 1) or scale) .. "ex" }, function ()
×
UNCOV
10
         SILE.settings:set("font.size", SILE.settings:get("font.size") * scale)
×
UNCOV
11
         SILE.call("color", { color = color }, function ()
×
UNCOV
12
            if open then
×
UNCOV
13
               SILE.typesetter:pushGlue({ width = -setback })
×
UNCOV
14
               SILE.call("rebox", { width = setback, height = 0 }, { mark })
×
15
            else
UNCOV
16
               SILE.typesetter:pushGlue(SILE.types.node.hfillglue())
×
UNCOV
17
               local hbox = SILE.typesetter:makeHbox({ mark }) -- for measuring
×
UNCOV
18
               SILE.typesetter:pushGlue({ width = setback - hbox.width })
×
UNCOV
19
               SILE.call("rebox", { width = hbox.width, height = 0 }, { mark })
×
UNCOV
20
               SILE.typesetter:pushGlue({ width = -setback })
×
21
            end
22
         end)
23
      end)
24
   end)
25
end
26

UNCOV
27
function package:_init ()
×
UNCOV
28
   base._init(self)
×
UNCOV
29
   self:loadPackage("color")
×
UNCOV
30
   self:loadPackage("raiselower")
×
UNCOV
31
   self:loadPackage("rebox")
×
32
end
33

UNCOV
34
function package:registerCommands ()
×
UNCOV
35
   self:registerCommand("pullquote:font", function (_, _) end, "The font chosen for the pullquote environment")
×
36

UNCOV
37
   self:registerCommand("pullquote:author-font", function (_, _)
×
UNCOV
38
      SILE.settings:set("font.style", "italic")
×
UNCOV
39
   end, "The font style with which to typeset the author attribution.")
×
40

UNCOV
41
   self:registerCommand("pullquote:mark-font", function (_, _)
×
UNCOV
42
      SILE.settings:set("font.family", "Libertinus Serif")
×
UNCOV
43
   end, "The font from which to pull the quotation marks.")
×
44

UNCOV
45
   self:registerCommand(
×
46
      "pullquote",
47
      function (options, content)
UNCOV
48
         SILE.typesetter:leaveHmode()
×
UNCOV
49
         local author = options.author or nil
×
UNCOV
50
         local scale = options.scale or 3
×
UNCOV
51
         local color = options.color or "#999999"
×
UNCOV
52
         SILE.settings:temporarily(function ()
×
UNCOV
53
            SILE.call("pullquote:font")
×
UNCOV
54
            local setback = SU.cast("length", options.setback or "2em"):absolute()
×
UNCOV
55
            SILE.settings:set("document.rskip", SILE.types.node.glue(setback))
×
UNCOV
56
            SILE.settings:set("document.lskip", SILE.types.node.glue(setback))
×
UNCOV
57
            SILE.call("noindent")
×
UNCOV
58
            typesetMark(true, setback, scale, color, "“")
×
UNCOV
59
            SILE.call("indent")
×
UNCOV
60
            SILE.process(content)
×
UNCOV
61
            typesetMark(false, setback, scale, color, "”")
×
UNCOV
62
            if author then
×
UNCOV
63
               SILE.settings:temporarily(function ()
×
UNCOV
64
                  SILE.typesetter:leaveHmode()
×
UNCOV
65
                  SILE.call("pullquote:author-font")
×
UNCOV
66
                  SILE.call("raggedleft", {}, function ()
×
UNCOV
67
                     SILE.typesetter:typeset("— " .. author)
×
68
                  end)
69
               end)
70
            else
71
               SILE.call("par")
×
72
            end
73
         end)
74
      end,
75
      "Typesets its contents in a formatted blockquote with decorative quotation\
×
76
        marks in the margins."
×
77
   )
78
end
79

80
package.documentation = [[
81
\begin{document}
82
The \autodoc:package{pullquote} package formats longer quotations in an indented blockquote block with decorative quotation marks in the margins.
83
Here is some text set in a \autodoc:environment{pullquote} environment:
84

85
\begin[author=Anatole France]{pullquote}%
86
An education is not how much you have committed to memory, or even how much you know.
87
It is being able to differentiate between what you do know and what you do not know.
88
\end{pullquote}
89

90
Optional values are available for:
91

92
\begin{itemize}
93
\item{\autodoc:parameter{author} to add an attribution line}
94
\item{\autodoc:parameter{setback} to set the bilateral margins around the block}
95
\item{\autodoc:parameter{color} to change the color of the quote marks}
96
\item{\autodoc:parameter{scale} to change the relative size of the quote marks}
97
\end{itemize}
98

99
If you want to specify what font the \autodoc:environment{pullquote} environment should use, you can redefine the \autodoc:command{\pullquote:font} command.
100
By default it will be the same as the surrounding document.
101
The font style used for the attribution line can likewise be set redefining \autodoc:command{\pullquote:author-font}, and the font used for the quote marks can be set redefining \autodoc:command{\pullquote:mark-font}.
102
\end{document}
UNCOV
103
]]
×
104

UNCOV
105
return package
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc