Describes the general approach to using Antenna House Formatter and CSS Paged Media to produce loose leaf updates for codified municipal code. Presented at Balisage 2019. https://www.balisage.net/Proceedings/vol23/html/Kimber01/BalisageVol23-Kimber01.html
C/D/H shares expert advice for advanced-level SharePoint designers and developers.
View our Mastering SharePoint Design slide deck to learn more about architecting branding solutions and creating branding features, including the anatomy of a custom feature and deployment.
And for more information on this or other SharePoint topics, visit our blog at www.cdhtalkstech.com.
Learn web designing course Bangalore, Infocampus is providing best web designing free demo classes 4 days, low course fees, pay fees in installment.
Contact: 9738001024…for more details….
Enquire on website-www.infocampus.co.in
C/D/H shares expert advice for advanced-level SharePoint designers and developers.
View our Mastering SharePoint Design slide deck to learn more about architecting branding solutions and creating branding features, including the anatomy of a custom feature and deployment.
And for more information on this or other SharePoint topics, visit our blog at www.cdhtalkstech.com.
Learn web designing course Bangalore, Infocampus is providing best web designing free demo classes 4 days, low course fees, pay fees in installment.
Contact: 9738001024…for more details….
Enquire on website-www.infocampus.co.in
Less and Gulp are two modern development tools that streamline web application development. Join us as we demonstrate how to leverage these tools for branding your Salesforce Community projects. You will learn how to use Less and Gulp to organize your CSS assets and how to apply those assets to Visualforce pages. You will also see how the combination of Merge Fields and Custom Settings makes branding changes easy to implement.
D1 - Building Great Client-side Web Parts with SPFx, PnP-JS-Core, ReactJS and...SPS Paris
Combine four key technologies to build great solutions for your company or clients. Build client-side web parts using the SharePoint Framework (SPFx) along with the open-source toolchain. The PnP-JS-Core library allows you to do a lot of work against the SharePoint REST API with just a few lines of code - sometimes even a single line of code! ReactJS is a view library that allows you to build lightning-fast user interfaces using a powerful component model. Finally, the Office UI Fabric, available in several forms including React components, allows you to build great-looking solutions that follow the design guidelines for SharePoint and Office Add-ins. Four great technologies in their own right, but in combination they allow you to deliver amazing SharePoint solutions with minimal effort.
Responsive Web Designed for your communication and marketing needsSEGIC
This presentation will give you an overview of the application of Responsive Web Designed. Obviously a live presentation would show you the application in Action
Introduces CSS pagination features and their strengths and limitations. Suggests that CSS for pagination is much easier to use, maintain, and staff than using XSL-FO, especially using the PDF2 transform provided with the DITA Open Toolkit. Describes the currently-available CSS pagination implementations.
Using your DB2 SQL Skills with Hadoop and SparkCynthia Saracco
Learn about Big SQL, IBM's SQL interface for Apache Hadoop based on DB2's query engine. We'll walk through some code example and discuss Spark integration for JDBC data sources (DB2 and Big SQL) using examples from a hands-on lab. Explore benchmark results comparing Big SQL and Spark SQL at 100TB. This presentation was created for the DB2 LUW TRIDEX Users Group meeting in NYC in June 2017.
This guide will not bring you a magic formula to optimize critical render path. When the subject is web performance: there's no magic formula. Analyze performance is careful and meticulous process, and it can bring different results based on various existing variables.
Less and Gulp are two modern development tools that streamline web application development. Join us as we demonstrate how to leverage these tools for branding your Salesforce Community projects. You will learn how to use Less and Gulp to organize your CSS assets and how to apply those assets to Visualforce pages. You will also see how the combination of Merge Fields and Custom Settings makes branding changes easy to implement.
D1 - Building Great Client-side Web Parts with SPFx, PnP-JS-Core, ReactJS and...SPS Paris
Combine four key technologies to build great solutions for your company or clients. Build client-side web parts using the SharePoint Framework (SPFx) along with the open-source toolchain. The PnP-JS-Core library allows you to do a lot of work against the SharePoint REST API with just a few lines of code - sometimes even a single line of code! ReactJS is a view library that allows you to build lightning-fast user interfaces using a powerful component model. Finally, the Office UI Fabric, available in several forms including React components, allows you to build great-looking solutions that follow the design guidelines for SharePoint and Office Add-ins. Four great technologies in their own right, but in combination they allow you to deliver amazing SharePoint solutions with minimal effort.
Responsive Web Designed for your communication and marketing needsSEGIC
This presentation will give you an overview of the application of Responsive Web Designed. Obviously a live presentation would show you the application in Action
Introduces CSS pagination features and their strengths and limitations. Suggests that CSS for pagination is much easier to use, maintain, and staff than using XSL-FO, especially using the PDF2 transform provided with the DITA Open Toolkit. Describes the currently-available CSS pagination implementations.
Using your DB2 SQL Skills with Hadoop and SparkCynthia Saracco
Learn about Big SQL, IBM's SQL interface for Apache Hadoop based on DB2's query engine. We'll walk through some code example and discuss Spark integration for JDBC data sources (DB2 and Big SQL) using examples from a hands-on lab. Explore benchmark results comparing Big SQL and Spark SQL at 100TB. This presentation was created for the DB2 LUW TRIDEX Users Group meeting in NYC in June 2017.
This guide will not bring you a magic formula to optimize critical render path. When the subject is web performance: there's no magic formula. Analyze performance is careful and meticulous process, and it can bring different results based on various existing variables.
Similar to Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination (20)
Describes a general technique for splitting columns or page sequences in XSL-FO instances in order to implement column switching or page sequence switching in FOP.
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITAContrext Solutions
Provides an overview of DITA's glossary markup, some of the challenges in authoring and managing glossaries, techniques for managing glossaries, and some discussion of processing required for glossaries.
Content Management on Zero Budget: DITA for Small TeamsContrext Solutions
Describes the DITA For Small Teams (D4ST) open-source project as well as the general D4ST approach to putting together DITA author, management, and production environment using free and open-source tools as much as possible.
Locale-Aware Sorting and Text Handling in the Open ToolkitContrext Solutions
Introduces the DITA Community Internationalization (i18n) library, which provides support for dictionary-based sorting and grouping of Simplified Chinese, as well as other language, as well as access to ICU4J's word and line boundary functions. Also provides Java and XSLT functions for getting the approximate rendered length of strings.
Provides an overview of the DITA for Small Teams (www.d4st.org) project and the general approach of using off-the-shelf open-source and commercial tools to set up a usable DITA authoring, management, and delivery system.
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITAContrext Solutions
Presents DITA markup for representing glossaries (<glossentry> and related elements) and references to them (<term>). Discusses strategies for how to assign and manage keys associated with glossary entries. Also discusses some of the processing challenges inherent in the glossary feature design.
Shows how to use XSLT with FrameMaker 2017. Provides an overview of XSLT basics and demonstrates how to integrate simple XSLT transforms with FrameMaker structured applications.
A brief discussion of reuse challenges in DITA and various responses to those challenges. Focuses on the challenges inherent in reusing topics that contain embedded cross references.
Describes how the RELAX NG grammar standard is an almost perfect match for DITA's grammar modularity and extension features, in sharp contrast to XSD, which basically does not work for DITA.
Managing Multiple Open Toolkit Configurations Using git Lightning TalkContrext Solutions
Briefly presents my technique for using a git repository to manage dozens of different Open Toolkit configurations.
Presented at DITA Open Toolkit Day 2015 in Munich, Germany.
An exploration of why writers coming to DITA tend to find DITA hard and what we and they can do to help ease the transition from non-DITA to DITA-based authoring of sophisticated technical documents. Presents the martial art Aikido as a metaphor for DITA and as a source of strategies for providers and writers to use as they engage with DITA.
They Worked Before, What Happened? Understanding DITA Cross-Book Links Contrext Solutions
When migrating content to DITA there are often
links from one book to another. These links work
in their legacy environment but don’t work when
migrated to DITA 1.2 or earlier. Why not? This
talk presents why it is that cross-book links that
work in legacy environments don‘t work when
migrated to DITA 1.1 or 1.2 and how to make
those links work using the new DITA 1.3 crossdeliverable
linking feature. It also presents challenges
faced by a major software vendor as they
migrate their manuals to DITA from FrameMaker
through DocBook to DITA and how to solve those
challenges with DITA 1.3.
Describes part of a large abstract hyperdocument version management model and then discusses how that model is applied to DITA documents in the context of the DITA for Small Teams project to enable low-cost management of DITA documents.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
2. About the Author
■ Independent consultant focusing on DITA
analysis, design, and implementation
■ Doing SGML and XML for cough 30 years cough
■ Founding member of the DITATechnical
Committee
■ Founding member of the XMLWorking Group
■ Co-editor of HyTime standard (ISO/IEC 10744)
■ Primary developer and founder of the DITA for
Publishers project (dita4publishers.org)
■ Author of DITA for Practitioners,Vol 1 (XML Press)
Balisage Pre-Conference Symposium 2019 2
3. Agenda
■ What?
■ Why?
■ CSS paged media
■ Producing Point Pages
■ Conclusions and Further Work
Balisage Pre-Conference Symposium 2019 3
5. The Client: Municode
■ Leading supplier of
municipal code
■ 2000+ clients
■ Replacing outdated
typesetting system that was
obsolete 20 years ago
– But it does loose leaf
■ Shifting focus from print to
digital
■ Print still essential
■ Looking for process
improvements
Balisage Pre-Conference Symposium 2019 5
6. Target System
■ CSS for pagination
■ Antenna House Formatter
for rendering to PDF
■ Custom processing to
implement loose leaf
■ Same source used for web
delivery
■ Source authored as highly-
constrained HTML5
■ Change boundaries are
marked manually
– Automatic detection of
changes is not a
requirement
Balisage Pre-Conference Symposium 2019 6
7. What Is Loose Leaf?
■ Pages that reflect changes
from the previously-
published version
■ Page numbers are not
changed
■ If pages are added, create
“point pages”: 12.1, 12.2, etc.
Balisage Pre-Conference Symposium 2019 7
9. The Use Case: Municipal Code
■ Muncipal code is the codified
laws for a city, town, county
or similar legal entity
■ Can be 1000s of pages
■ Updated frequently
– Every city council meeting
Balisage Pre-Conference Symposium 2019 9
11. Why Loose Leaf?
■ People who use the code
depend on their paper copies
■ Would be impractical to
republish and redistribute for
every update
■ Loose leaf is the only
practical solution for paper
updates here
Balisage Pre-Conference Symposium 2019 11
12. Why CSS for Pagination?
■ Client insisted on it
■ Authoring directly in HTML5
■ Wanted to use a standard
technology
■ Did not have XSL-FO skills
and knowledge
■ Did not have XSLT skills and
knowledge
■ Layout requirements are
challenging but still
achievable (mostly)
■ Compelling cost advantages
– Easier to implement
– Separation of concerns
– Can hire CSS people
Balisage Pre-Conference Symposium 2019 12
13. Why Antenna House Formatter?
■ Most complete CSS paged
media implementation
■ Demonstrated ability to
meet layout requirements
■ Mature product with good
reputation
Balisage Pre-Conference Symposium 2019 13
15. CSS Paged Media
■ Adds rules, properties,
values, etc. to CSS
specifically for paged media
■ Page master definition
■ Page edge regions (running
heads and feet, etc.)
■ Generated text features
■ Additional typographic
features
■ Scattered across a number of
different specifications
■ Not fully baked
Balisage Pre-Conference Symposium 2019 15
16. Practical CSS Pagination Realities
■ Today only commercial tools
provide sufficiently complete
implementations
■ Proprietary extensions are
required to meet many
layout requirements
■ Need to preprocess HTML or
generate HTML from non-
XML source
■ Specs are constantly
changing
– Hard to find answers to
some questions
– Hard to keep up with
changes
■ No single source of practical
instruction (today)
– See Liam Quin and me
Balisage Pre-Conference Symposium 2019 16
17. CSSValue Proposition
■ Easy syntax to learn and use
compared to XSL-FO
■ Cleaner separation of
concerns between data
processing and visual design
■ Can share core CSS with
browser and paged
deliverables
■ CSS is “cool”
■ XSL-FO is “what the heck is
XSL-FO?”
■ Complexity of required XSLT
much lower
■ On balance: compelling
solution
Balisage Pre-Conference Symposium 2019 17
18. “Augmented HTML” is Required
■ CSS can only decorate
■ Need to synthesize:
– Tables of contents
– Indexes
– Complex running heads and
feet
■ Can simplify CSS by adding
containers or attributes
■ CSS has selector limitations
– Can’t look ahead
– May require new classes
based on descendants or
following elements
■ May need to reorder or
otherwise modify source as
authored
Balisage Pre-Conference Symposium 2019 18
21. Differences from XSL-FO
■ Any element can start a page
sequence
■ Edge region model different
(and more limited)
■ No table markers
■ No index entry features
■ No concept of “folio”–page
numbers are just counters
■ No flow model
■ Can use CSS grid (if
implementation supports it)
■ See LiamQuin for details
Balisage Pre-Conference Symposium 2019 21
23. The Challenges
■ Identifying pages in the
change set
■ Determining page numbers
for pages
– Changing page number
from formatter-assigned
page number
– Constructing point page
numbers
■ Ensuring change sets end on
even pages
■ Updating page numbers
■ Capturing page history
■ Generating full-doc tables of
contents
Balisage Pre-Conference Symposium 2019 23
24. General Solution:
Post Process the AreaTree
■ AHF can produce an “area
tree” document
■ XML representation of the
formatted pages
■ AHF can take area tree as
input to produce final forms
(PDF, etc.)
■ Area tree is not standard but
is reasonably stable
■ Structure is logical and easy
to understand
Balisage Pre-Conference Symposium 2019 24
<AreaRoot xmlns="http://www.antennahouse.com/names/XSL/AreaTree"
font-size="10pt" is-first="true" is-last="true" version="605.0"
is-CSS="true" display-role="root">
<PageViewportArea output-volume-break="false" generated-by="html" counter-reset="footnote"
is-first="true" is-link-destination="true" id="x99999" width="612pt" height="792pt"
abs-page-number="1" orig-abs-page-number="1" page-number="1" format="1" stacking-context="true"
display-role="root" in-job="false">
<PageReferenceArea generated-by="html" is-first="true" is-last="true" width="612pt"
height="792pt" display-role="block">
<PageRegionViewportArea region="none" generated-by="html" counter-reset="footnote"
is-first="true" is-last="true" top-position="36pt" bottom-position="36pt"
left-position="36pt" right-position="36pt" width="540pt" height="720pt" region-name=""
display-role="root">
<PageRegionReferenceArea generated-by="html" is-first="true" width="540pt" height="720pt"
display-role="block">
<BlockArea line-height="14pt" generated-by="html" text-align="justify"
font-family=""New Century Schoolbook", serif" display="block" id="x99999"
font-size="10pt" is-first="true" bottom-position="395.75pt" width="540pt"
height="324.25pt" display-role="root">
25. General Challenge:
Injecting Additional Data Into AreaTree
■ Need to capture data needed
for post processing:
– Change set boundaries
– Imposed page numbers
– Source element type types
(section, figure, table,
generated, etc.)
– Page numbers with
structure
■ Three basic solutions:
1. Structured IDs
2. Magic character
conventions
3. Data in unused page edge
regions
■ Use “marker” elements to
inject arbitrary information
Balisage Pre-Conference Symposium 2019 25
26. Markers and Structured IDs
■ AHF necessarily captures IDs
of all elements that are not
explicitly omitted
■ Use ID values as structured
fields:
<areaTreeMarker
id="take:take-begin:job=S103:d20p61”
/>
<areaTreeMarker
id="marker:section:update-
ins:start:portrait:id=instruction_sheet"
>
■ Use CSS to key on ID values:
div.section-body
areaTreeMarker[id ^= 'take:take-begin']
{
display: block;
break-before: right;
}
section > section +
areaTreeMarker[id ^= 'take:take-end'],
section > section >
areaTreeMarker[id ^= 'take:take-end'],
div.section-body
areaTreeMarker[id ^= 'take:take-end']
{
display: block;
break-after: right;
}
Balisage Pre-Conference Symposium 2019 26
27. Magic Characters:
Structured Page Numbers
■ Display page numbers have
three parts:
– Prefolio (“CH-1”)
– Folio (the page number)
– Postfolio (“-”)
■ Need to distinguish for post
processing:
– Find page numbers
– Change the number
■ Solution:
– Use @class and @id for page
number references:
<span class="page" id="page:d2816e24">
<span
class="page-number-marker">​</span>
<a id="pageref:d2816e27" class="frontmatter"
href="#x8A66ACBA2357"/>
<span class="page-number-marker”
>​</span></span>
■ Use non-breaking space to
separate folio parts
Balisage Pre-Conference Symposium 2019 27
28. ToYour Corner:
Using Page Edge Regions
■ Capture page number
format
■ Capture numeric page
number
■ Use corner regions
<MarginRegionViewportArea
visibility="hidden"
region-name="bottom-right-corner">
<MarginRegionReferenceArea visibility="hidden"
display-role="block">
<BlockArea
visibility="hidden" display-role="block">
<LineArea visibility="hidden" display-role="block">
<TextArea text="^pnf:1" visibility="hidden"/>
</LineArea>
</BlockArea>
</MarginRegionReferenceArea>
</MarginRegionViewportArea>
Balisage Pre-Conference Symposium 2019 28
29. AreaTree Update Process
1. Set page number and
format
2. Update page numbers
3. Filter pages
4. Renumber absolute page
numbers
5. Final update processing
6. Update page number
database
Balisage Pre-Conference Symposium 2019 29
30. Updating Page Numbers
■ AHF generates normal
integer page numbers
■ Will need to change some
– Different start page
– Numbers pulled from page
database
– Point page numbers
■ Width of number will likely
change
■ In some contexts, need to
adjust the horizontal position
■ In particular,ToC entries
■ Challenge: how wide is the
new number?
Balisage Pre-Conference Symposium 2019 30
31. Page Number Widths Solution:
Generate Exemplars in the AreaTree
■ HTML preprocess generates
elements for each character
in each font and size:
<char-samples
id="util:char-samples">
<char-sample class="body">
<char-set class="number-set sz8pt"
id="util:char-set:body-sz8pt"
>
<decimal>.</decimal>
<char>0</char>
<char>1</char>
<char>2</char>...
</char-set>
...
</char-sample>
...
</char-samples>
■ In area tree, can look up by font
family, size, and character:
<xsl:key name="char-samples"
match="at:BlockArea[starts-with(@id,
'util:char-set:')]//at:TextArea"
use="at:make-char-sample-key(@font-family,
@font-size, @text)"
/>
...
<xsl:variable name="key" as="xs:string"
select="at:make-char-sample-key(
$font-family,
$font-size,
$text)"
/>
<xsl:variable name="result" as="element()?"
select="key('char-samples’,
$key,
root($context))[1]"
/>
Balisage Pre-Conference Symposium 2019 31
32. Page Number Database
■ Two parts:
– Record of each physical
page
– Mapping of elements to the
pages they started on
■ Updated when final version
is published
■ Serves:
– Update instructions
– List of effective pages
– Supplement history
– Table of contents
■ Implemented as a version-
controlled XML file today
Balisage Pre-Conference Symposium 2019 32
34. In Summary
■ It works!
■ Not that hard once I figured
out how to do it
■ CSS offers compelling
advantages…
■ …but requires commercial
solutions today
■ Hand marking of change sets
avoids a hard problem
■ Area tree is proprietary but it
is not opaque
Balisage Pre-Conference Symposium 2019 34
35. More to Be Done
■ Automatic detection of
changes
■ Auto-insertion of changed
pages
■ Better automate capturing
legacy page number data
■ Refine inefficient processing
■ Clean up area tree before
generating PDF
■ More robust page database
Balisage Pre-Conference Symposium 2019 35
36. Resources
CSS: https://www.w3.org/TR/#tr_Cascading_Style_Sheets_(CSS)_Working_Group
Antenna House Formatter: https://www.antennahouse.com/formatter/
CSS Pagination Book (rough draft): https://drmacro.github.io/css-pagination-book/
CSS training (Liam Quin): https://www.delightfulcomputing.com/course-css-for-
xml-people.html
Graham,Tony. “Decision making in XSL-FO formatting.” Presented at Balisage: The
Markup Conference 2013, Montréal, Canada, August 6 - 9, 2013. In Proceedings of
Balisage:The Markup Conference 2013. Balisage Series on MarkupTechnologies, vol.
10 (2013). https://doi.org/10.4242/BalisageVol10.Graham01.
Balisage Pre-Conference Symposium 2019 36