From 11223a3e7c12a18bc7473d314e01018c75f52cb3 Mon Sep 17 00:00:00 2001
From: "Kenneth G. Franqueiro" The triggering element is a button and the script is triggered from the onclick event. This sends the appropriate events to the operating system so that assistive technology is aware of the change in the DOM. In this example, the Submit and Reset buttons inside the dialog simply hide the The The script toggles the display of the popup In this example, the :focus pseudo-class is used to change the style applied to input fields when they receive focus by changing the background color. This example demonstrates a technique to un-obscure content underneath a fixed-position banner. To prevent the page becoming unusable at smaller screen sizes, the banner becomes un-fixed. To observe the Working example: Using CSS By default, in all modern browsers, this button does not show any focus indication when activated using a mouse/pointer. Browsers show their default focus outline/indication when a user sets focus on the button using Tab. In order to make this focus indication more prominent, we use the Working example: Using CSS The text input is preceded by a visible text label "Enter name", but the text is not marked up as a The text input is preceded by a visible text label "Enter name". The text's container has an The following word looks, in browsers with appropriate font support, like the English word "cook", yet is composed of the string The following example, like its predecessor, will look like the English word "cook" when rendered in browsers with appropriate font support. In this case, the characters are implemented with character entities, but the word will still not be processed meaningfully, and a text alternative is not provided. Working Example: "ϲоοk" A website conveys information in a nested list format. The understandability of the list hierarchy is supported by the indentation of the list content. While it is important for the individual list item text to reflow, the list hierarchy would suffer if flattened so that all content would fit within a 320 CSS pixel wide viewport. The following example list contains additional nested lists to provide more context for each of the parent list item's text. To maintain the visual hierarchy, the indentation of each list level remains present, but modified once an author defined CSS breakpoint is met. Additional styles are set for different breakpoints to mitigate against the potential for content to extend beyond a 320px wide viewport, while accounting for visual spacing against the borders of the viewport, to attempt to make the content not feel cramped. At the smallest breakpoint, the content of list items receive a minimum width to mitigate against potentially "squished" content lists with many nested levels. At this breakpoint, each nested list level can be horizontally scrolled into view, and once a nested list is visible within the viewport, only vertical scrolling will be necessary to read the content of the nested list's items. As a user zooms in the web page, the CSS of the indentation can be adjusted to maintain this necessary structure, while also allowing more text to be visible on a single line. The following represents a Python code example. The indentation of each line of text is necessary to create a group of statements that are executed as a block. The following code example demonstrates the use of indentation to convey the nesting of elements in an HTML document: The indentation of code blocks like these could be adjusted at different viewport sizes, via a CSS Media Query. starting with ${excerpt}`
+ );
+ });
+ if (process.env.ELEVENTY_RUN_MODE === "build") {
+ throw new Error(
+ "Please ensure all code blocks have a highlight.js class (language-* or no-highlight)."
+ );
+ }
+ }
+
const prependedIncludes = ["header"];
const appendedIncludes = ["wai-site-footer", "site-footer"];
diff --git a/techniques/aria/ARIA24.html b/techniques/aria/ARIA24.html
index 58ea3f9dbf..f7a06ac00a 100644
--- a/techniques/aria/ARIA24.html
+++ b/techniques/aria/ARIA24.html
@@ -79,7 +79,7 @@
- Instead of... -
- Do... -
- <p>
+
<p>
<span class="icon icon-star-bg" role="img" aria-label="Favorite"></span>
</p>
An options button that opens a dialog
div
. ...
+
...
<button onclick="TogglePopup(event,true)"
name="pop0001">Options</button>
@@ -46,7 +46,7 @@
An options button that opens a dialog
div
, heading and form
elements are styled with CSS to look like a dialog. ...
+
...
a { color:blue; }
a.clickPopup img { border:none; width:0; }
@@ -63,7 +63,7 @@
An options button that opens a dialog
div
, showing it and hiding it. ...
+
...
function TogglePopup(evt,show) {
HarmonizeEvent(evt);
var src = evt.target;
diff --git a/techniques/css/C15.html b/techniques/css/C15.html
index 431313e20f..d195968968 100644
--- a/techniques/css/C15.html
+++ b/techniques/css/C15.html
@@ -48,7 +48,7 @@
Link elements
Highlighting elements that receive focus
<!doctype html>
+
<!doctype html>
<html lang="en">
<head>
<style>
diff --git a/techniques/css/C43.html b/techniques/css/C43.html
index 3c72c24857..0c0682570b 100644
--- a/techniques/css/C43.html
+++ b/techniques/css/C43.html
@@ -30,7 +30,7 @@
Using CSS
scroll-padding
to un-obscure contentscroll-padding
effect you will need to use a viewport over 800px wide.scroll-padding
to un-obscure content.<!doctype html>
+
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
diff --git a/techniques/css/C45.html b/techniques/css/C45.html
index 716caf52c6..214e866461 100644
--- a/techniques/css/C45.html
+++ b/techniques/css/C45.html
@@ -36,7 +36,7 @@
Using CSS
:focus-visible
:focus-visible
pseudo-class selector to define a more intentional and pronounced focus style.:focus-visible
to provide keyboard focus indication.<!DOCTYPE html>
+
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
diff --git a/techniques/css/C8.html b/techniques/css/C8.html
index 5ac75fb8ee..b6997ce629 100644
--- a/techniques/css/C8.html
+++ b/techniques/css/C8.html
@@ -27,7 +27,7 @@
Increasing the spacing between characters in a word
The CSS
-h2 {
+
h2 {
letter-spacing: 1em;
}
Examples
A text input with a visible label, but without an accessible name
<label>
for the input, and there is no alternative way (e.g., aria-label
) to provide the input with an accessible name at all.
+
@@ -39,7 +39,7 @@
<p>Enter name</p>
<input type="text">
A text input with a visible label, but without an accessible name
A text input with a visible label and aria-labelledby pointing to a non-existent id
id
of nameEntry
, but the input has an aria-labelledby
referencing a non-existent name-entry
id
. As a result, the input lacks an accessible name altogether.
+
diff --git a/techniques/failures/F71.html b/techniques/failures/F71.html
index a2248a4f63..56ba2bcc3f 100644
--- a/techniques/failures/F71.html
+++ b/techniques/failures/F71.html
@@ -12,14 +12,14 @@
<p id="nameEntry">Enter name</p>
<input type="text" aria-labelledby="name-entry" >
Characters
U+03f2 U+043E U+03BF U+006B
, only one of which is a letter from the Western alphabet. This word will not be processed meaningfully, and a text alternative is not provided.
+ ϲоοk
ϲоοk
Character entities
+ ϲоοk
ϲоοk
Examples
+
-
<div class="example">
<ul>
<li>
@@ -56,7 +56,7 @@
Examples
</ul>
</div>
+
*, *::before, *::after {
box-sizing: border-box;
}
@@ -92,7 +92,7 @@
Examples
+
def complex_function(x):
if x > 0:
for i in range(x):
@@ -114,7 +114,7 @@
Examples
print("x is not a positive number")
+
<html lang=en>
<head>...</head>
<body>
@@ -125,7 +125,7 @@
Examples
</html>
+
@media screen and ( min-width: 320px ) {
pre {
tab-size: 8px;
diff --git a/techniques/general/G91.html b/techniques/general/G91.html
index e1d5450785..9c769cab79 100644
--- a/techniques/general/G91.html
+++ b/techniques/general/G91.html
@@ -23,7 +23,7 @@
Description
Examples
Describing the purpose of a link in HTML in the text content of the
-a
element
+<a href="routes.html">Current routes at Boulders Climbing Gym</a>
<a href="routes.html">Current routes at Boulders Climbing Gym</a>
Examples
An applet to play the tic-tac-toe game.
- <applet code="tictactoe.class" width="250" height="250" alt="tic-tac-toe game">
+
<applet code="tictactoe.class" width="250" height="250" alt="tic-tac-toe game">
tic-tac-toe game
</applet>
tabindex
attributes of the input fields are used to specify a tab
order that navigates column by column.
<form action="#" method="post">
+ <form action="#" method="post">
<table summary="the first column contains the search criteria
of the groom, the second column the search criteria of
of the bride">
@@ -89,7 +89,7 @@
a different number for each element. Then it is easy to rearrange those elements or
add new elements and maintain a logical tab order.
- <a href="xxx" tabindex = "1">First link in list</a>
+ <a href="xxx" tabindex = "1">First link in list</a>
<a href="xxx" tabindex = "1">Second link in list</a>
<a href="xxx" tabindex = "1">Link that was added long
after the original list was created</a>
diff --git a/techniques/html/H45.html b/techniques/html/H45.html
index a12a13b9a7..4c221fa0e6 100644
--- a/techniques/html/H45.html
+++ b/techniques/html/H45.html
@@ -18,11 +18,11 @@
Examples
Using longdesc to refer to a long description contained on a separate resource.
- <p><img src="chart.gif" alt="a complex chart" longdesc="chartdesc.html"/></p>
+ <p><img src="chart.gif" alt="a complex chart" longdesc="chartdesc.html"/></p>
Using longdesc to refer to a long description within the same page.
- <img longdesc="thispage.html#desc" alt="Line graph of the number of subscribers" src="http://www.company/images/graph.png">
+ <img longdesc="thispage.html#desc" alt="Line graph of the number of subscribers" src="http://www.company/images/graph.png">
<div id="desc">
<h3>Long Description: Line graph of the number of subscribers</h3>
<!-- Full Description of Graph -->
diff --git a/techniques/html/H46.html b/techniques/html/H46.html
index 4e7c8ec7f0..1301cba1cd 100644
--- a/techniques/html/H46.html
+++ b/techniques/html/H46.html
@@ -21,7 +21,7 @@
noembed
is provided inside an embed
- <embed src="../movies/history_of_rome.mov"
+ <embed src="../movies/history_of_rome.mov"
height="60" width="144" autostart="false">
<noembed>
<a href="../transcripts/transcript_history_rome.htm">Transcript of "The history of Rome"</a>
@@ -32,7 +32,7 @@
noembed
is provided beside an embed
- <embed src="moviename.swf" width="100" height="80"
+ <embed src="moviename.swf" width="100" height="80"
pluginspage="http://example.com/shockwave/download/" />
<noembed>
<img alt="Still from Movie" src="moviename.gif"
diff --git a/techniques/html/H56.html b/techniques/html/H56.html
index ee9d7c1901..871df63fec 100644
--- a/techniques/html/H56.html
+++ b/techniques/html/H56.html
@@ -33,7 +33,7 @@ Defining the text direction of a nested, mixed-direction phrase, in Hebrew a
the title is "YTIVITCA NOITAZILANOITANRETNI, w3c" in hebrew.
The following markup will produce the expected result:
-<p>The title says "<span lang="he" dir="rtl">פעילות הבינאום, W3C</span>" in Hebrew.</p>
+<p>The title says "<span lang="he" dir="rtl">פעילות הבינאום, W3C</span>" in Hebrew.</p>
diff --git a/techniques/html/H59.html b/techniques/html/H59.html
index 6acda14da8..2d07193925 100644
--- a/techniques/html/H59.html
+++ b/techniques/html/H59.html
@@ -38,7 +38,7 @@ Examples
A web page for Chapter 2 of an on-line book might contain the following links
within the head
section.
-<link rel="prev" href="Chapter01.html" title="01. Why Volunteer?">
+<link rel="prev" href="Chapter01.html" title="01. Why Volunteer?">
<link rel="next" href="Chapter03.html" title="03. Who Volunteers?" />
diff --git a/techniques/html/H60.html b/techniques/html/H60.html
index 9b511d8f11..0d3d7171d3 100644
--- a/techniques/html/H60.html
+++ b/techniques/html/H60.html
@@ -15,7 +15,7 @@
Examples
The WCAG 2 Glossary.
- <link rel="glossary" href="https://www.w3.org/TR/WCAG20/#glossary">
+ <link rel="glossary" href="https://www.w3.org/TR/WCAG20/#glossary">
Tests
Procedure
diff --git a/techniques/html/H70.html b/techniques/html/H70.html
index 7fa4b23239..07c0079757 100644
--- a/techniques/html/H70.html
+++ b/techniques/html/H70.html
@@ -33,7 +33,7 @@
source parameter of main.html and the title attribute, "Main News Content" which
identifies its function.
- <frameset cols="20%, *">
+ <frameset cols="20%, *">
<frame src="navigation.html" name="navbar" title="Navigation Bar" />
<frame src="main.html" name="maincontent" title="Main News Content" />
<noframes>
diff --git a/techniques/html/H73.html b/techniques/html/H73.html
index d227c19062..721887ad20 100644
--- a/techniques/html/H73.html
+++ b/techniques/html/H73.html
@@ -36,7 +36,7 @@ A data table with a summary
but no caption
This example shows a bus schedule. The route number and direction are included in
the summary
along with information on how to use the schedule.
- <table summary="Schedule for Route 7 going downtown. Service begins
+ <table summary="Schedule for Route 7 going downtown. Service begins
at 4:00 AM and ends at midnight. Intersections are listed in the top row.
Find the intersection closest to your starting point or destination, then read
down that column to find out what time the bus leaves that intersection.">
@@ -65,7 +65,7 @@ A data table with both a summary
and a caption
Screen readers read the caption
, followed by the
summary
.
- <table summary="Intersections are listed in row 1.
+ <table summary="Intersections are listed in row 1.
Find the intersection closest to your starting point
or destination, then read down that column to find
out what time the bus leaves that intersection.
diff --git a/techniques/pdf/PDF1.html b/techniques/pdf/PDF1.html
index 01fb20bf9d..7d25d64d00 100644
--- a/techniques/pdf/PDF1.html
+++ b/techniques/pdf/PDF1.html
@@ -82,11 +82,11 @@ Adding alt text to an image in OpenOffice with the Writer add-on
Adding a text alternative to an image in a PDF document using an /Alt
entry
The /Alt
property used on an image of mountains with a moon and trees typically would be used like this (typically accomplished by an authoring tool):
-/Figure <</Alt (Sketch of Mountains with moon rising over trees)>>
+/Figure <</Alt (Sketch of Mountains with moon rising over trees)>>
The image might also be represented by a tag with a different name. A different name might be used because the tag name is written in a language other than English or because a specific tool uses a different name for some other reason. In this situation, it is also necessary that the RoleMap
contained within the StructTreeRoot
for the PDF document contain an entry which explicitly maps the name of the tag used for the image with the standard structure type used in PDF documents (in this case, Figure). If the RoleMap contains only an entry mapping Shape tags to Figure tags, the rolemap
information would appear as follows:
-/RoleMap << /Shape /Figure >>
+/RoleMap << /Shape /Figure >>
In this case, the usage of the /Alt
entry as follows would also be correct:
-/Shape <</Alt (Crater Lake in the summer, with the blue sky, clouds and
+/Shape <</Alt (Crater Lake in the summer, with the blue sky, clouds and
crater walls perfectly reflected in the lake) >>
Note that the /Alt
entry in property lists can be combined with other entries.
diff --git a/techniques/pdf/PDF10.html b/techniques/pdf/PDF10.html
index 4e8de9b4d6..49b9c4b0ae 100644
--- a/techniques/pdf/PDF10.html
+++ b/techniques/pdf/PDF10.html
@@ -69,7 +69,7 @@ Adding a tooltip to interactive form controls
The following code fragment illustrates the use of the TU entry to
provide a tooltip (or programmatically associated text label) for a
form field. This is typically accomplished by an authoring tool.
- << /AP -dict-
+ << /AP -dict-
/DA /Helv 0 Tf 0 g
/DR -dict-
/F 0x4
diff --git a/techniques/pdf/PDF11.html b/techniques/pdf/PDF11.html
index 8d79742d32..830fa533fa 100644
--- a/techniques/pdf/PDF11.html
+++ b/techniques/pdf/PDF11.html
@@ -116,14 +116,14 @@ Marking up link text using a /Link
structure element
the association between content items and link annotations, providing
functionality comparable to HTML hypertext links.
In HTML, the following example produces text containing a hypertext link:
- <p>Here is some text <a href="https://www.w3.org/WAI/">with a link</a> inside.</p>
+ <p>Here is some text <a href="https://www.w3.org/WAI/">with a link</a> inside.</p>
In PDF the page must be painted first and then a link annotation
placed over the area where the object action will occur.
The following code fragment shows PDF equivalent to the HTML above;
it uses link text displayed in blue and underlined. A second code fragment
follows, indicating the associated logical structure hierarchy. This
is typically accomplished by an authoring tool.
- /P <</MCID 0>> %Marked Content Sequence 0 (paragraph)
+ /P <</MCID 0>> %Marked Content Sequence 0 (paragraph)
BDC %Begin marked content sequence
BT %Begin text object
/F1 11.04 Tf %set text font and size
@@ -168,7 +168,7 @@ Marking up link text using a /Link
structure element
The following code fragment is an excerpt from the logical structure
that establishes the association between the content items and the
link annotation:
- 11 0 obj %Object ID 11, generation 0, obj keyword
+ 11 0 obj %Object ID 11, generation 0, obj keyword
<</K[1 %immediate child of the structure tree root
<<
/Obj 26 0 R %reference to Object 26
diff --git a/techniques/pdf/PDF12.html b/techniques/pdf/PDF12.html
index 3b2a191f26..924d534d58 100644
--- a/techniques/pdf/PDF12.html
+++ b/techniques/pdf/PDF12.html
@@ -177,7 +177,7 @@ Specifying name, role, value and/or state for a form field using Adobe Acrob
Adding a checkbox in a PDF document using the /Btn
field type
The following code fragment illustrates code that is typical for a simple check box field such as shown in Examples 1 and 2. This is typically accomplished by an authoring tool.
- 1 0 obj
+ 1 0 obj
<< /FT /Btn % Role
/TU Retiree % Name
/V /Yes % Value
diff --git a/techniques/pdf/PDF13.html b/techniques/pdf/PDF13.html
index da101e5c20..60e909514b 100644
--- a/techniques/pdf/PDF13.html
+++ b/techniques/pdf/PDF13.html
@@ -65,14 +65,14 @@ Adding alternate link text using Adobe Acrobat 9 Pro
Adding alternate link text in a PDF document using the /Alt
entry
The following code fragment illustrates code that is typical for alternative text for a link. This is typically accomplished by an authoring tool.
- 32 0 obj
+ 32 0 obj
<<
/S/URI %Action type (required), must be URI for a URI action
/URI(http://www.boston.com/business/technology/) %Uniform resource identifier(required), the URI to be resolved
>>
endobj
The following illustrates how to specify alternate text for the URL in the above link:
- 11 0 obj
+ 11 0 obj
<<
/Alt(Boston Globe technology page) %Alternate text entry
/K [ 1
diff --git a/techniques/pdf/PDF16.html b/techniques/pdf/PDF16.html
index 576a34ec3f..9d5d6bfb23 100644
--- a/techniques/pdf/PDF16.html
+++ b/techniques/pdf/PDF16.html
@@ -46,7 +46,7 @@ Adding a /Lang
entry to specify the default document language u
Specifying the default document language in a PDF document using a /Lang
entry
The natural language used for text in a document is determined in a hierarchical fashion, based on whether an optional /Lang
entry is present in any of several possible locations. At the highest level, the document's default language may be specified by a /Lang
entry in the document catalog.
The following code fragment illustrates code that is typical for using the /Lang
entry in the document catalog for a document's default language (in this case English). (This is typically accomplished by an authoring tool.)
- 1 0 obj
+ 1 0 obj
<< /Type /Catalog
...
/Lang (en)
diff --git a/techniques/pdf/PDF17.html b/techniques/pdf/PDF17.html
index 4c82e9a94d..9c73e67eef 100644
--- a/techniques/pdf/PDF17.html
+++ b/techniques/pdf/PDF17.html
@@ -77,7 +77,7 @@ Specifying page numbers using the /PageLabels
entry
The following code fragment illustrates code that is typical for specifying multiple page numbering schemes in a document.
The example below is for a document with pages labeled: i, ii, iii, iv, 1, 2, 3, A-8, A-9, ...
This numbering scheme requires 3 page-label dictionaries (for lowercase Roman, Arabic, and prefixed numbers)
- 1 0 obj
+ 1 0 obj
<< /Type /Catalog
/PageLabels << /Nums [ 0 << /S /r >> % lowercase Roman numerals
4 << /S /D >> % Arabic numerals
diff --git a/techniques/pdf/PDF18.html b/techniques/pdf/PDF18.html
index b616e5d0e0..5874dfa98d 100644
--- a/techniques/pdf/PDF18.html
+++ b/techniques/pdf/PDF18.html
@@ -58,7 +58,7 @@ Setting the document title in the metadata and specifying that the title be
A /Title
entry in the document information dictionary of a PDF document
The following code fragment illustrates code that is typical for providing a /Title
entry in a document information dictionary that contains a document title.
- 1 0 obj
+ 1 0 obj
<< /Title (Applying Guerrilla Tactics to Usability Testing by People with Disabilities)
/Author (Mary Smith)
/CreationDate (D:19970915110347-08'00')
diff --git a/techniques/pdf/PDF19.html b/techniques/pdf/PDF19.html
index f7701707dc..5040778c2a 100644
--- a/techniques/pdf/PDF19.html
+++ b/techniques/pdf/PDF19.html
@@ -74,7 +74,7 @@ Specifying the language for a word or phrase in a PDF document using a Structure elements of any type, through a /Lang
entry in the structure element dictionary.
The following code fragment illustrates code that is typical for using the /Lang
entry to override the default document language by specifying a marked-content sequence within a page's content stream:
- /P % Start of marked-content sequence
+ /P % Start of marked-content sequence
BDC
(See you later, or in Spanish you would say, ) Tj
/Span << /Lang (es-MX) >>% Start of nested marked-content sequence
@@ -84,7 +84,7 @@ Specifying the language for a word or phrase in a PDF document using a
The following code fragment illustrates code that is typical for using the /Lang
entry in the structure element dictionary. In this case, the /Lang
entry applies to the marked-content sequence having an MCID (marked-content identifier) value of 0 within the indicated page's content stream.
- 1 0 obj% Structure element
+ 1 0 obj% Structure element
<< /Type /StructElem
/S /Span% Structure type
/P /P% Parent in structure hierarchy
diff --git a/techniques/pdf/PDF2.html b/techniques/pdf/PDF2.html
index 6c16959837..890e925fc7 100644
--- a/techniques/pdf/PDF2.html
+++ b/techniques/pdf/PDF2.html
@@ -76,7 +76,7 @@ Adding bookmarks using Adobe Acrobat Pro after conversion
Creating bookmarks with the outline hierarchy
The following code fragment illustrates part of an outline hierarchy used to create bookmarks This is typically accomplished by an authoring tool.
-121 0 obj
+121 0 obj
<< /Type /Outlines
/First 22 0 R
/Last 29 0 R
diff --git a/techniques/pdf/PDF20.html b/techniques/pdf/PDF20.html
index 4084c89a3c..596de1eae8 100644
--- a/techniques/pdf/PDF20.html
+++ b/techniques/pdf/PDF20.html
@@ -77,7 +77,7 @@ Repairing table cells using the table editor in the Reading Order tool in Ad
Marking up a table using table structure elements
The following code fragment illustrates code that is typical for a simple table (header row and data row) such as shown in Examples 1-3:
- 95 0 obj %Structure element for a table
+ 95 0 obj %Structure element for a table
<<
/A 39 0 R
/K[96 0 R 101 0 R 106 0 R 111 0 R]
diff --git a/techniques/pdf/PDF23.html b/techniques/pdf/PDF23.html
index ea9ffdfa2a..b16aa5feeb 100644
--- a/techniques/pdf/PDF23.html
+++ b/techniques/pdf/PDF23.html
@@ -66,7 +66,7 @@ Adding form controls in PDF documents using Adobe Acrobat Pro
Adding a text field in a PDF document using the /Tx
field type
The following code fragment illustrates code that is typical for a simple text field such as shown in Examples 1 and 2. This is typically accomplished by an authoring tool.
- << /AP -dict-
+ << /AP -dict-
/DA /Helv 0 Tf 0 g
/DR -dict-
/F 0x4
diff --git a/techniques/pdf/PDF4.html b/techniques/pdf/PDF4.html
index 25bf431fd2..c3a06f020d 100644
--- a/techniques/pdf/PDF4.html
+++ b/techniques/pdf/PDF4.html
@@ -39,10 +39,10 @@ Marking an image as an artifact in a PDF document using an /Artifact tag or
/Artifact
- BMC ... EMC
+ BMC ... EMC
or
/Artifact propertyList
- BDC ... EMC
+ BDC ... EMC
The first is used to identify a generic artifact; the second is used for artifacts that have an associated property list. Note, to aid in text reflow, artifacts should be defined with property lists whenever possible. Artifacts lacking a specified bounding box are likely to be discarded during reflow.
Property list entries for artifacts include Type
, BBox
, Attached
, and Subtype
.
diff --git a/techniques/pdf/PDF5.html b/techniques/pdf/PDF5.html
index e17a9f2b65..306f2afc7b 100644
--- a/techniques/pdf/PDF5.html
+++ b/techniques/pdf/PDF5.html
@@ -42,7 +42,7 @@ Creating a required field in a PDF form using Acrobat Pro
Adding a required text field in a PDF form using the /Tx field type and Ff flag
The following code fragment illustrates code that is typical for the object definitions for a typical text field. Note that the text field is required, using the Ff flag. This is typically accomplished by an authoring tool.
-<< /AP -dict-
+<< /AP -dict-
/DA /Helv 0 Tf 0 g
/DR -dict-
/F 0x4
diff --git a/techniques/pdf/PDF6.html b/techniques/pdf/PDF6.html
index 5f9a3621cf..9b0e636b8d 100644
--- a/techniques/pdf/PDF6.html
+++ b/techniques/pdf/PDF6.html
@@ -87,7 +87,7 @@ Modifying table tags using the Tags tab in Adobe Acrobat Pro
Marking up a table using table structure elements
The following code fragment illustrates code that is typical for a simple table (header row and data row):
-95 0 obj %Structure element for a table
+95 0 obj %Structure element for a table
<<
/A 39 0 R
/K[96 0 R 101 0 R 106 0 R 111 0 R]
diff --git a/techniques/pdf/PDF8.html b/techniques/pdf/PDF8.html
index 479b30a1eb..f49df2f162 100644
--- a/techniques/pdf/PDF8.html
+++ b/techniques/pdf/PDF8.html
@@ -49,7 +49,7 @@ Adding an /E
entry to an abbreviation using Adobe Acrobat Pro's
Using a /Span
structure element with an /E entry to define an abbreviation
The following code fragment illustrates code that is typical for using the /Span
structure element to define an abbreviation.
This example uses the sentence "Sugar is commonly sold in 5 lb bags." The abbreviation "lb" is tagged as a /Span
structure element with an /E
entry (typically accomplished by an authoring tool).
-1 0 obj % structure element
+1 0 obj % structure element
<< /Type /StructElemen
/S /Span % element type
/P ... % Parent in structure hierarchy
@@ -66,7 +66,7 @@ Using a /TH
structure element with an /E
entry to
As noted in the Description, the /E
entry is valid with any structure element.
The following code fragment illustrates code that is typical for using an /E
entry to define an abbreviation.
A table that contains columns for each month uses abbreviations as the values of column headers. The expansion for each abbreviation is provided as the /E
entry of the /TH
structure element (typically accomplished by an authoring tool).
-1 0 obj % structure element
+1 0 obj % structure element
<< /Type /StructElemen
/S /TH % element type
/P ... % Parent in structure hierarchy
diff --git a/techniques/pdf/PDF9.html b/techniques/pdf/PDF9.html
index 3472691f5c..e2882a4935 100644
--- a/techniques/pdf/PDF9.html
+++ b/techniques/pdf/PDF9.html
@@ -72,7 +72,7 @@ Creating documents in OpenOffice Writer that have correctly tagged headings
Marking up headings using /Hn elements
Headings within PDF documents can be marked up using /Hn elements in the structure tree, where n is numeral 1 through 6 (for example /H1, /H2, etc.).
The following code fragment illustrates code that is typical for using the /Hn elements to mark content. Note that /H1 has been role-mapped to /Head1 in this example. This is typically accomplished by an authoring tool.
- 0 obj% Document catalog
+ 0 obj% Document catalog
<< /Type /Catalog
/Pages 100 0 R % Page tree
/StructTreeRoot 300 0 R % Structure tree root
@@ -122,7 +122,7 @@ Marking up headings using /Hn elements
endobj
...
Within marked content containers, headings can be marked up using /Headn elements as follows for a first-level heading in a PDF document:
-BT % Start of text object
+BT % Start of text object
/Head1 <</MCID 0 >> % Start of marked-content sequence
BDC
...
diff --git a/understanding/20/language-of-parts.html b/understanding/20/language-of-parts.html
index c1c44d7737..7ebf618259 100644
--- a/understanding/20/language-of-parts.html
+++ b/understanding/20/language-of-parts.html
@@ -134,7 +134,7 @@ "Podcast" used in a French sentence
The element's content and attribute values are in different languages
This example assumes that the page's default content is in English. The link's title
attribute is in English, but the nested span
element that contains the word Español has a lang="es"
attribute.
- <a title="Spanish" href="qa-html-language-declarations-es.html"><span lang="es">Español</span></a>
+ <a title="Spanish" href="qa-html-language-declarations-es.html"><span lang="es">Español</span></a>
diff --git a/understanding/conformance.html b/understanding/conformance.html
index fce6341271..4620b5ca00 100644
--- a/understanding/conformance.html
+++ b/understanding/conformance.html
@@ -233,7 +233,7 @@ Understanding Conformance Claims
Here is a claim which has been enhanced with schema.org metadata:
-
+
<div typeof="WebPage" vocab="http://schema.org/">
<p property="accessibilitySummary">On 23 March 2009, all content available on
the server at <a
From 21b9c7c9d16e8f4bf21db686661ed0b7276f1f18 Mon Sep 17 00:00:00 2001
From: "Kenneth G. Franqueiro"
Date: Fri, 19 Sep 2025 05:53:02 -0400
Subject: [PATCH 2/4] Update highlight.js to latest and add missing referenced
languages
(Not bothering to add languages for obsolete techniques, e.g. AS/C#)
---
script/highlight.min.js | 1118 ++++++++++++++++++++++-----------------
1 file changed, 625 insertions(+), 493 deletions(-)
diff --git a/script/highlight.min.js b/script/highlight.min.js
index 66b0b34c7d..83dda36f8e 100644
--- a/script/highlight.min.js
+++ b/script/highlight.min.js
@@ -1,496 +1,628 @@
/*!
- Highlight.js v11.0.1 (git: 1cf31f015d)
- (c) 2006-2021 Ivan Sagalaev and other contributors
+ Highlight.js v11.11.1 (git: 08cb242e7d)
+ (c) 2006-2025 Josh Goebel and other contributors
License: BSD-3-Clause
+ Languages: apache css java javascript php php-template python vbnet xml
*/
- var hljs=function(){"use strict";var e={exports:{}};function t(e){
- return e instanceof Map?e.clear=e.delete=e.set=()=>{
- throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
- throw Error("set is read-only")
- }),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]
- ;"object"!=typeof i||Object.isFrozen(i)||t(i)})),e}
- e.exports=t,e.exports.default=t;var n=e.exports;class i{constructor(e){
- void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
- ignoreMatch(){this.isMatchIgnored=!0}}function r(e){
- return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")
- }function s(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
- ;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const o=e=>!!e.kind
- ;class a{constructor(e,t){
- this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
- this.buffer+=r(e)}openNode(e){if(!o(e))return;let t=e.kind
- ;t=e.sublanguage?"language-"+t:((e,{prefix:t})=>{if(e.includes(".")){
- const n=e.split(".")
- ;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
- }return`${t}${e}`})(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){
- o(e)&&(this.buffer+="")}value(){return this.buffer}span(e){
- this.buffer+=``}}class l{constructor(){this.rootNode={
- children:[]},this.stack=[this.rootNode]}get top(){
- return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
- this.top.children.push(e)}openNode(e){const t={kind:e,children:[]}
- ;this.add(t),this.stack.push(t)}closeNode(){
- if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
- for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
- walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
- return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
- t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
- "string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
- l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e}
- addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}
- addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root
- ;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){
- return new a(this,this.options).value()}finalize(){return!0}}function g(e){
- return e?"string"==typeof e?e:e.source:null}function d(...e){
- return e.map((e=>g(e))).join("")}function u(...e){return"("+((e=>{
- const t=e[e.length-1]
- ;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
- })(e).capture?"":"?:")+e.map((e=>g(e))).join("|")+")"}function h(e){
- return RegExp(e.toString()+"|").exec("").length-1}
- const f=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
- ;function p(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
- ;let i=g(e),r="";for(;i.length>0;){const e=f.exec(i);if(!e){r+=i;break}
- r+=i.substring(0,e.index),
- i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0],
- "("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}
- const b="[a-zA-Z]\\w*",m="[a-zA-Z_]\\w*",E="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",y="\\b(0b[01]+)",w={
- begin:"\\\\[\\s\\S]",relevance:0},_={scope:"string",begin:"'",end:"'",
- illegal:"\\n",contains:[w]},v={scope:"string",begin:'"',end:'"',illegal:"\\n",
- contains:[w]},O=(e,t,n={})=>{const i=s({scope:"comment",begin:e,end:t,
- contains:[]},n);i.contains.push({scope:"doctag",
- begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
- end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
- ;const r=u("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
- ;return i.contains.push({begin:d(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i
- },k=O("//","$"),N=O("/\\*","\\*/"),S=O("#","$");var M=Object.freeze({
- __proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:b,UNDERSCORE_IDENT_RE:m,
- NUMBER_RE:E,C_NUMBER_RE:x,BINARY_NUMBER_RE:y,
- RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
- SHEBANG:(e={})=>{const t=/^#![ ]*\//
- ;return e.binary&&(e.begin=d(t,/.*\b/,e.binary,/\b.*/)),s({scope:"meta",begin:t,
- end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
- BACKSLASH_ESCAPE:w,APOS_STRING_MODE:_,QUOTE_STRING_MODE:v,PHRASAL_WORDS_MODE:{
- begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
- },COMMENT:O,C_LINE_COMMENT_MODE:k,C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:S,
- NUMBER_MODE:{scope:"number",begin:E,relevance:0},C_NUMBER_MODE:{scope:"number",
- begin:x,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:y,relevance:0},
- REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
- end:/\/[gimuy]*/,illegal:/\n/,contains:[w,{begin:/\[/,end:/\]/,relevance:0,
- contains:[w]}]}]},TITLE_MODE:{scope:"title",begin:b,relevance:0},
- UNDERSCORE_TITLE_MODE:{scope:"title",begin:m,relevance:0},METHOD_GUARD:{
- begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{
- "on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
- t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function R(e,t){
- "."===e.input[e.index-1]&&t.ignoreMatch()}function j(e,t){
- void 0!==e.className&&(e.scope=e.className,delete e.className)}function A(e,t){
- t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
- e.__beforeBegin=R,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
- void 0===e.relevance&&(e.relevance=0))}function I(e,t){
- Array.isArray(e.illegal)&&(e.illegal=u(...e.illegal))}function B(e,t){
- if(e.match){
- if(e.begin||e.end)throw Error("begin & end are not supported with match")
- ;e.begin=e.match,delete e.match}}function T(e,t){
- void 0===e.relevance&&(e.relevance=1)}const L=(e,t)=>{if(!e.beforeMatch)return
- ;if(e.starts)throw Error("beforeMatch cannot be used with starts")
- ;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
- })),e.keywords=n.keywords,
- e.begin=d(n.beforeMatch,d("(?=",n.begin,")")),e.starts={relevance:0,
- contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch
- },D=["of","and","for","in","not","or","if","then","parent","list","value"]
- ;function P(e,t,n="keyword"){const i=Object.create(null)
- ;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{
- Object.assign(i,P(e[n],t,n))})),i;function r(e,n){
- t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
- ;i[n[0]]=[e,C(n[0],n[1])]}))}}function C(e,t){
- return t?Number(t):(e=>D.includes(e.toLowerCase()))(e)?0:1}const H={},$=e=>{
- console.error(e)},U=(e,...t)=>{console.log("WARN: "+e,...t)},z=(e,t)=>{
- H[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),H[`${e}/${t}`]=!0)
- },K=Error();function W(e,t,{key:n}){let i=0;const r=e[n],s={},o={}
- ;for(let e=1;e<=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=h(t[e-1])
- ;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function X(e){(e=>{
- e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
- delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
- _wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
- }),(e=>{if(Array.isArray(e.begin)){
- if(e.skip||e.excludeBegin||e.returnBegin)throw $("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
- K
- ;if("object"!=typeof e.beginScope||null===e.beginScope)throw $("beginScope must be object"),
- K;W(e,e.begin,{key:"beginScope"}),e.begin=p(e.begin,{joinWith:""})}})(e),(e=>{
- if(Array.isArray(e.end)){
- if(e.skip||e.excludeEnd||e.returnEnd)throw $("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
- K
- ;if("object"!=typeof e.endScope||null===e.endScope)throw $("endScope must be object"),
- K;W(e,e.end,{key:"endScope"}),e.end=p(e.end,{joinWith:""})}})(e)}function G(e){
- function t(t,n){return RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}
- class n{constructor(){
- this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
- addRule(e,t){
- t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
- this.matchAt+=h(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
- ;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(p(e,{joinWith:"|"
- }),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
- ;const t=this.matcherRe.exec(e);if(!t)return null
- ;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
- ;return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){
- this.rules=[],this.multiRegexes=[],
- this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
- if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
- ;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
- t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
- return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
- this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
- const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
- ;let n=t.exec(e)
- ;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
- const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
- return n&&(this.regexIndex+=n.position+1,
- this.regexIndex===this.count&&this.considerAll()),n}}
- if(e.compilerExtensions||(e.compilerExtensions=[]),
- e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
- ;return e.classNameAliases=s(e.classNameAliases||{}),function n(r,o){const a=r
- ;if(r.isCompiled)return a
- ;[j,B,X,L].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))),
- r.__beforeBegin=null,[A,I,T].forEach((e=>e(r,o))),r.isCompiled=!0;let l=null
- ;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),
- l=r.keywords.$pattern,
- delete r.keywords.$pattern),l=l||/\w+/,r.keywords&&(r.keywords=P(r.keywords,e.case_insensitive)),
- a.keywordPatternRe=t(l,!0),
- o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),
- r.end&&(a.endRe=t(r.end)),
- a.terminatorEnd=g(r.end)||"",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)),
- r.illegal&&(a.illegalRe=t(r.illegal)),
- r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>s(e,{
- variants:null},t)))),e.cachedVariants?e.cachedVariants:Z(e)?s(e,{
- starts:e.starts?s(e.starts):null
- }):Object.isFrozen(e)?s(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{n(e,a)
- })),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new i
- ;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
- }))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
- }),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function Z(e){
- return!!e&&(e.endsWithParent||Z(e.starts))}const F=r,V=s,q=Symbol("nomatch")
- ;var J=(e=>{const t=Object.create(null),r=Object.create(null),s=[];let o=!0
- ;const a="Could not find the language '{}', did you forget to load/include a language module?",l={
- disableAutodetect:!0,name:"Plain text",contains:[]};let g={
- ignoreUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
- languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
- cssSelector:"pre code",languages:null,__emitter:c};function d(e){
- return g.noHighlightRe.test(e)}function u(e,t,n,i){let r="",s=""
- ;"object"==typeof t?(r=e,
- n=t.ignoreIllegals,s=t.language,i=void 0):(z("10.7.0","highlight(lang, code, ...args) has been deprecated."),
- z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
- s=e,r=t),void 0===n&&(n=!0);const o={code:r,language:s};w("before:highlight",o)
- ;const a=o.result?o.result:h(o.language,o.code,n,i)
- ;return a.code=o.code,w("after:highlight",a),a}function h(e,n,r,s){
- const l=Object.create(null);function c(){if(!k.keywords)return void S.addText(M)
- ;let e=0;k.keywordPatternRe.lastIndex=0;let t=k.keywordPatternRe.exec(M),n=""
- ;for(;t;){n+=M.substring(e,t.index)
- ;const r=_.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,k.keywords[i]);if(s){
- const[e,i]=s
- ;if(S.addText(n),n="",l[r]=(l[r]||0)+1,l[r]<=7&&(R+=i),e.startsWith("_"))n+=t[0];else{
- const n=_.classNameAliases[e]||e;S.addKeyword(t[0],n)}}else n+=t[0]
- ;e=k.keywordPatternRe.lastIndex,t=k.keywordPatternRe.exec(M)}var i
- ;n+=M.substr(e),S.addText(n)}function d(){null!=k.subLanguage?(()=>{
- if(""===M)return;let e=null;if("string"==typeof k.subLanguage){
- if(!t[k.subLanguage])return void S.addText(M)
- ;e=h(k.subLanguage,M,!0,N[k.subLanguage]),N[k.subLanguage]=e._top
- }else e=f(M,k.subLanguage.length?k.subLanguage:null)
- ;k.relevance>0&&(R+=e.relevance),S.addSublanguage(e._emitter,e.language)
- })():c(),M=""}function u(e,t){let n=1;for(;void 0!==t[n];){if(!e._emit[n]){n++
- ;continue}const i=_.classNameAliases[e[n]]||e[n],r=t[n]
- ;i?S.addKeyword(r,i):(M=r,c(),M=""),n++}}function p(e,t){
- return e.scope&&"string"==typeof e.scope&&S.openNode(_.classNameAliases[e.scope]||e.scope),
- e.beginScope&&(e.beginScope._wrap?(S.addKeyword(M,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
- M=""):e.beginScope._multi&&(u(e.beginScope,t),M="")),k=Object.create(e,{parent:{
- value:k}}),k}function b(e,t,n){let r=((e,t)=>{const n=e&&e.exec(t)
- ;return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){const n=new i(e)
- ;e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){
- for(;e.endsParent&&e.parent;)e=e.parent;return e}}
- if(e.endsWithParent)return b(e.parent,t,n)}function m(e){
- return 0===k.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){
- const t=e[0],i=n.substr(e.index),r=b(k,e,i);if(!r)return q;const s=k
- ;k.endScope&&k.endScope._wrap?(d(),
- S.addKeyword(t,k.endScope._wrap)):k.endScope&&k.endScope._multi?(d(),
- u(k.endScope,e)):s.skip?M+=t:(s.returnEnd||s.excludeEnd||(M+=t),
- d(),s.excludeEnd&&(M=t));do{
- k.scope&&!k.isMultiClass&&S.closeNode(),k.skip||k.subLanguage||(R+=k.relevance),
- k=k.parent}while(k!==r.parent)
- ;return r.starts&&p(r.starts,e),s.returnEnd?0:t.length}let y={};function w(t,s){
- const a=s&&s[0];if(M+=t,null==a)return d(),0
- ;if("begin"===y.type&&"end"===s.type&&y.index===s.index&&""===a){
- if(M+=n.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`)
- ;throw t.languageName=e,t.badRule=y.rule,t}return 1}
- if(y=s,"begin"===s.type)return(e=>{
- const t=e[0],n=e.rule,r=new i(n),s=[n.__beforeBegin,n["on:begin"]]
- ;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return m(t)
- ;return n.skip?M+=t:(n.excludeBegin&&(M+=t),
- d(),n.returnBegin||n.excludeBegin||(M=t)),p(n,e),n.returnBegin?0:t.length})(s)
- ;if("illegal"===s.type&&!r){
- const e=Error('Illegal lexeme "'+a+'" for mode "'+(k.scope||"")+'"')
- ;throw e.mode=k,e}if("end"===s.type){const e=x(s);if(e!==q)return e}
- if("illegal"===s.type&&""===a)return 1
- ;if(A>1e5&&A>3*s.index)throw Error("potential infinite loop, way more iterations than matches")
- ;return M+=a,a.length}const _=E(e)
- ;if(!_)throw $(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
- ;const v=G(_);let O="",k=s||v;const N={},S=new g.__emitter(g);(()=>{const e=[]
- ;for(let t=k;t!==_;t=t.parent)t.scope&&e.unshift(t.scope)
- ;e.forEach((e=>S.openNode(e)))})();let M="",R=0,j=0,A=0,I=!1;try{
- for(k.matcher.considerAll();;){
- A++,I?I=!1:k.matcher.considerAll(),k.matcher.lastIndex=j
- ;const e=k.matcher.exec(n);if(!e)break;const t=w(n.substring(j,e.index),e)
- ;j=e.index+t}return w(n.substr(j)),S.closeAllNodes(),S.finalize(),O=S.toHTML(),{
- language:e,value:O,relevance:R,illegal:!1,_emitter:S,_top:k}}catch(t){
- if(t.message&&t.message.includes("Illegal"))return{language:e,value:F(n),
- illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j,
- context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:O},_emitter:S};if(o)return{
- language:e,value:F(n),illegal:!1,relevance:0,errorRaised:t,_emitter:S,_top:k}
- ;throw t}}function f(e,n){n=n||g.languages||Object.keys(t);const i=(e=>{
- const t={value:F(e),illegal:!1,relevance:0,_top:l,_emitter:new g.__emitter(g)}
- ;return t._emitter.addText(e),t})(e),r=n.filter(E).filter(y).map((t=>h(t,e,!1)))
- ;r.unshift(i);const s=r.sort(((e,t)=>{
- if(e.relevance!==t.relevance)return t.relevance-e.relevance
- ;if(e.language&&t.language){if(E(e.language).supersetOf===t.language)return 1
- ;if(E(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=s,c=o
- ;return c.secondBest=a,c}function p(e){let t=null;const n=(e=>{
- let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
- ;const n=g.languageDetectRe.exec(t);if(n){const t=E(n[1])
- ;return t||(U(a.replace("{}",n[1])),
- U("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
- return t.split(/\s+/).find((e=>d(e)||E(e)))})(e);if(d(n))return
- ;w("before:highlightElement",{el:e,language:n
- }),!g.ignoreUnescapedHTML&&e.children.length>0&&(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
- console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),
- console.warn(e)),t=e;const i=t.textContent,s=n?u(i,{language:n,ignoreIllegals:!0
- }):f(i);e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n
- ;e.classList.add("hljs"),e.classList.add("language-"+i)
- })(e,n,s.language),e.result={language:s.language,re:s.relevance,
- relevance:s.relevance},s.secondBest&&(e.secondBest={
- language:s.secondBest.language,relevance:s.secondBest.relevance
- }),w("after:highlightElement",{el:e,result:s,text:i})}let b=!1;function m(){
- "loading"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(p):b=!0
- }function E(e){return e=(e||"").toLowerCase(),t[e]||t[r[e]]}
- function x(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
- r[e.toLowerCase()]=t}))}function y(e){const t=E(e)
- ;return t&&!t.disableAutodetect}function w(e,t){const n=e;s.forEach((e=>{
- e[n]&&e[n](t)}))}
- "undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
- b&&m()}),!1),Object.assign(e,{highlight:u,highlightAuto:f,highlightAll:m,
- highlightElement:p,
- highlightBlock:e=>(z("10.7.0","highlightBlock will be removed entirely in v12.0"),
- z("10.7.0","Please use highlightElement now."),p(e)),configure:e=>{g=V(g,e)},
- initHighlighting:()=>{
- m(),z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
- initHighlightingOnLoad:()=>{
- m(),z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
- },registerLanguage:(n,i)=>{let r=null;try{r=i(e)}catch(e){
- if($("Language definition for '{}' could not be registered.".replace("{}",n)),
- !o)throw e;$(e),r=l}
- r.name||(r.name=n),t[n]=r,r.rawDefinition=i.bind(null,e),r.aliases&&x(r.aliases,{
- languageName:n})},unregisterLanguage:e=>{delete t[e]
- ;for(const t of Object.keys(r))r[t]===e&&delete r[t]},
- listLanguages:()=>Object.keys(t),getLanguage:E,registerAliases:x,
- autoDetection:y,inherit:V,addPlugin:e=>{(e=>{
- e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
- e["before:highlightBlock"](Object.assign({block:t.el},t))
- }),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
- e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)}
- }),e.debugMode=()=>{o=!1},e.safeMode=()=>{o=!0},e.versionString="11.0.1"
- ;for(const e in M)"object"==typeof M[e]&&n(M[e]);return Object.assign(e,M),e
- })({}),Y=Object.freeze({__proto__:null});const Q=J
- ;for(const e of Object.keys(Y)){const t=e.replace("grmr_","")
- ;Q.registerLanguage(t,Y[e])}return Q}()
- ;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("css",(()=>{"use strict"
- ;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse()
- ;return n=>{const a=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},HEXCOLOR:{
- scope:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},
- ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
- contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
- scope:"number",
- begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
- relevance:0}}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS",
- case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},
- classNameAliases:{keyframePosition:"selector-tag"},
- contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/
- },a.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0
- },{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0
- },a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{
- begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{
- className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]",
- contains:[a.HEXCOLOR,a.IMPORTANT,a.CSS_NUMBER_MODE,...l,{
- begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"
- },contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]
- },{className:"built_in",begin:/[\w-]+(?=\()/}]},{
- begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")),
- end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",
- begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,
- relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",
- attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"
- },...l,a.CSS_NUMBER_MODE]}]},{className:"selector-tag",
- begin:"\\b("+e.join("|")+")\\b"}]};var s}})());hljs.registerLanguage("xml",(()=>{"use strict";function e(e){
- return e?"string"==typeof e?e:e.source:null}function n(e){return a("(?=",e,")")}
- function a(...n){return n.map((n=>e(n))).join("")}function s(...n){
- return"("+((e=>{const n=e[e.length-1]
- ;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}
- })(n).capture?"":"?:")+n.map((n=>e(n))).join("|")+")"}return e=>{
- const t=a(/[A-Z_]/,a("(?:",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={
- className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},c={begin:/\s/,
- contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
- },r=e.inherit(c,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{
- className:"string"}),g=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),m={
- endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",
- begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
- className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{
- begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
- name:"HTML, XML",
- aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
- case_insensitive:!0,contains:[{className:"meta",begin://,
- relevance:10,contains:[c,g,l,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",
- begin://,contains:[c,r,g,l]}]}]},e.COMMENT(//,{
- relevance:10}),{begin://,relevance:10},i,{
- className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",
- begin:/