git: e97e672bd7 - main - doc: fix HTML validation errors in docs content

From: Vladlen Popolitov <vladlen_at_FreeBSD.org>
Date: Sat, 26 Sep 2026 16:36:15 UTC
The branch main has been updated by vladlen:

URL: https://cgit.FreeBSD.org/doc/commit/?id=e97e672bd7239671ae4b671fba5a3eb538df86b3

commit e97e672bd7239671ae4b671fba5a3eb538df86b3
Author:     Vladlen Popolitov <vladlen@FreeBSD.org>
AuthorDate: 2026-09-26 16:36:09 +0000
Commit:     Vladlen Popolitov <vladlen@FreeBSD.org>
CommitDate: 2026-09-26 16:36:09 +0000

    doc: fix HTML validation errors in docs content
    
    Fix AsciiDoc markup causing incorrect HTML output
    
    Fix broken link and italic rendering caused by unescaped characters
    in AsciiDoc sources.
    
    Reviewed by: carlavilla
    Approved by: carlavilla
    Differential Revision: https://reviews.freebsd.org/D60042
    PR: 297509
---
 documentation/content/en/articles/committers-guide/_index.adoc |  2 +-
 documentation/content/en/books/accessibility/partii.adoc       |  8 ++++++++
 documentation/content/en/books/handbook/basics/_index.adoc     |  8 ++++----
 documentation/content/en/books/handbook/bsdinstall/_index.adoc | 10 +++++-----
 documentation/content/en/books/handbook/containers/_index.adoc |  3 ++-
 shared/contrib-386bsd.adoc                                     |  2 +-
 shared/contrib-additional.adoc                                 |  4 ++--
 7 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/documentation/content/en/articles/committers-guide/_index.adoc b/documentation/content/en/articles/committers-guide/_index.adoc
index 7f00f90a62..af20a3aed7 100644
--- a/documentation/content/en/articles/committers-guide/_index.adoc
+++ b/documentation/content/en/articles/committers-guide/_index.adoc
@@ -451,7 +451,7 @@ git worktree add -b admin ../${repo}-admin internal/admin
 ....
 
 For browsing `internal/admin` branch on web:
-`https://cgit.freebsd.org/${repo}/log/?h=internal/admin`
+`pass:macros[https://cgit.freebsd.org/${repo}/log/?h=internal/admin]`
 
 For pushing, specify the full refspec:
 
diff --git a/documentation/content/en/books/accessibility/partii.adoc b/documentation/content/en/books/accessibility/partii.adoc
index 2001639e9c..4599518c3c 100644
--- a/documentation/content/en/books/accessibility/partii.adoc
+++ b/documentation/content/en/books/accessibility/partii.adoc
@@ -8,6 +8,14 @@ params:
   path: "/books/accessibility/partii/"
 ---
 
+ifdef::env-beastie[]
+ifdef::backend-html5[]
+ifndef::chapters-path[]
+include::shared/{{% lang %}}/urls.adoc[]
+endif::[]
+endif::[]
+endif::[]
+
 [[partii-vision]]
 = Vision
 
diff --git a/documentation/content/en/books/handbook/basics/_index.adoc b/documentation/content/en/books/handbook/basics/_index.adoc
index 88c348a858..14bf5b3734 100644
--- a/documentation/content/en/books/handbook/basics/_index.adoc
+++ b/documentation/content/en/books/handbook/basics/_index.adoc
@@ -1221,12 +1221,12 @@ Call `A` the root file system.
 If man:ls[1] is used to view the contents of this directory, it will show two subdirectories, `A1` and `A2`.
 The directory tree looks like this:
 
-image::example-dir1.png[Directory tree with the root directory and two subdirectories, A1 and A2]
+image::example-dir1.png["Directory tree with the root directory and two subdirectories, A1 and A2"]
 
 A file system must be mounted on to a directory in another file system.
 When mounting file system `B` on to the directory `A1`, the root directory of `B` replaces `A1`, and the directories in `B` appear accordingly:
 
-image::example-dir2.png[Directory tree with the root directory and two subdirectories, A1 and A2. And more subdirectories, B1 and B2 hanging from A1]
+image::example-dir2.png["Directory tree with the root directory and two subdirectories, A1 and A2. And more subdirectories, B1 and B2 hanging from A1"]
 
 Any files that are in the `B1` or `B2` directories can be reached with the path `/A1/B1` or `/A1/B2` as necessary.
 Any files that were in `/A1` have been temporarily hidden.
@@ -1234,7 +1234,7 @@ They will reappear if `B` is _unmounted_ from `A`.
 
 If `B` had been mounted on `A2` then the diagram would look like this:
 
-image::example-dir3.png[Directory tree with the root directory and two subdirectories, A1 and A2. And more subdirectories, B1 and B2 hanging from A2]
+image::example-dir3.png["Directory tree with the root directory and two subdirectories, A1 and A2. And more subdirectories, B1 and B2 hanging from A2"]
 
 and the paths would be `/A2/B1` and `/A2/B2` respectively.
 
@@ -1245,7 +1245,7 @@ image::example-dir4.png[A complex directory tree. With different subdirectories
 
 Or `C` could be mounted directly on to the `A` file system, under the `A1` directory:
 
-image::example-dir5.png[A complex directory tree. With different subdirectories hanging from root.]
+image::example-dir5.png["A complex directory tree. With different subdirectories hanging from root."]
 
 It is entirely possible to have one large root file system, and not need to create any others.
 There are some drawbacks to this approach, and one advantage.
diff --git a/documentation/content/en/books/handbook/bsdinstall/_index.adoc b/documentation/content/en/books/handbook/bsdinstall/_index.adoc
index 577c0114e0..9b9c4921be 100644
--- a/documentation/content/en/books/handbook/bsdinstall/_index.adoc
+++ b/documentation/content/en/books/handbook/bsdinstall/_index.adoc
@@ -437,7 +437,7 @@ Next, bsdinstall will prompt to select optional components to install.
 
 [[bsdinstall-config-components]]
 .Selecting Components to Install
-image::bsdinstall-config-components.png[Different components that can be installed. Example: base-dbg, lib32, ports, etc.]
+image::bsdinstall-config-components.png["Different components that can be installed. Example: base-dbg, lib32, ports, etc."]
 
 Deciding which components to install will depend largely on the intended use of the system and the amount of disk space available.
 The FreeBSD kernel and userland, collectively known as the _base system_, are always installed.
@@ -478,7 +478,7 @@ The next menu is used to determine the method for allocating disk space.
 
 [[bsdinstall-zfs-partmenu]]
 .Partitioning Choices
-image::bsdinstall-zfs-partmenu.png[Shows the different partition options. Example: Manual, Shell, etc.]
+image::bsdinstall-zfs-partmenu.png["Shows the different partition options. Example: Manual, Shell, etc."]
 
 bsdinstall gives the user four methods for allocating disk space:
 
@@ -628,7 +628,7 @@ The kbd:[Tab] key is used to give focus to the fields (after cycling through btn
 
 [[bsdinstall-part-manual-addpart]]
 .Manually Create Partitions
-image::bsdinstall-part-manual-addpart.png[Menu requesting type, size, mountpoint and label for the new partition.]
+image::bsdinstall-part-manual-addpart.png["Menu requesting type, size, mountpoint and label for the new partition."]
 
 A standard FreeBSD GPT installation uses at least three partitions, including either UFS or ZFS:
 
@@ -762,7 +762,7 @@ Select kbd:[T] to configure the `Pool Type` and the disk(s) that will constitute
 
 [[bsdinstall-zfs-vdev_type]]
 .ZFS Pool Type
-image::bsdinstall-zfs-vdev_type.png[Menu requesting the Virtual Device type. Ex: stripe, mirror, raidz1]
+image::bsdinstall-zfs-vdev_type.png["Menu requesting the Virtual Device type. Ex: stripe, mirror, raidz1"]
 
 Here is a summary of the `Pool Type` that can be selected in this menu:
 
@@ -1153,7 +1153,7 @@ After everything has been installed and configured, a final chance is provided t
 
 [[bsdinstall-final-config]]
 .Final Configuration
-image::bsdinstall-finalconfiguration.png[Menu showing different options to perform before finishing the installation. Ex: Add user, Time Zone, etc.]
+image::bsdinstall-finalconfiguration.png["Menu showing different options to perform before finishing the installation. Ex: Add user, Time Zone, etc."]
 
 Use this menu to make any changes or to do any additional configuration before completing the installation.
 
diff --git a/documentation/content/en/books/handbook/containers/_index.adoc b/documentation/content/en/books/handbook/containers/_index.adoc
index 1c7b21bcb0..b00fd470f2 100644
--- a/documentation/content/en/books/handbook/containers/_index.adoc
+++ b/documentation/content/en/books/handbook/containers/_index.adoc
@@ -191,7 +191,8 @@ Use these if you want to test against what subsequent future releases of FreeBSD
 
 Architecture-independent images can be downloaded and directly imported into your own registry from the https://download.freebsd.org/releases[Official FreeBSD Releases] site, or alternatively, pulled from the FreeBSD project's https://hub.docker.com/u/freebsd[Docker Hub], or https://github.com/orgs/freebsd/packages[GitHub Container Registry].
 
-Both https://hub.docker.com/_/alpine/[Alpine Linux] and the https://hub.docker.com/_/debian/[Debian] project publish tagged and mutable images, using similar approaches.
+// Escape only the first _ in a Docker Hub URL (/_/) so Asciidoctor does not treat it as an italic marker.
+Both https://hub.docker.com/\_/alpine/[Alpine Linux] and the https://hub.docker.com/_/debian/[Debian] project publish tagged and mutable images, using similar approaches.
 
 [[containers-podman-intro]]
 == Introduction to Podman
diff --git a/shared/contrib-386bsd.adoc b/shared/contrib-386bsd.adoc
index a8e239de0e..6b2bb9996d 100644
--- a/shared/contrib-386bsd.adoc
+++ b/shared/contrib-386bsd.adoc
@@ -54,7 +54,7 @@
 * Keith Bostic <mailto:bostic@toe.CS.Berkeley.EDU[bostic@toe.CS.Berkeley.EDU]>
 * Ken Hughes
 * Kent Talarico <mailto:kent@shipwreck.tsoft.net[kent@shipwreck.tsoft.net]>
-* Kevin Lahey <mailto:kml%rokkaku.UUCP@mathcs.emory.edu[kml%rokkaku.UUCP@mathcs.emory.edu]mailto:kml@mosquito.cis.ufl.edu[kml@mosquito.cis.ufl.edu]>
+* Kevin Lahey <mailto:kml%25rokkaku.UUCP@mathcs.emory.edu[kml%rokkaku.UUCP@mathcs.emory.edu]mailto:kml@mosquito.cis.ufl.edu[kml@mosquito.cis.ufl.edu]>
 * Konstantinos Konstantinidis <mailto:kkonstan@duth.gr[kkonstan@duth.gr]>
 * Marc Frajola <mailto:marc@dev.com[marc@dev.com]>
 * Mark Tinguely <mailto:tinguely@plains.nodak.edu[tinguely@plains.nodak.edu]mailto:tinguely@hookie.cs.ndsu.NoDak.edu[tinguely@hookie.cs.ndsu.NoDak.edu]>
diff --git a/shared/contrib-additional.adoc b/shared/contrib-additional.adoc
index c1a2adba20..3696dc6e8a 100644
--- a/shared/contrib-additional.adoc
+++ b/shared/contrib-additional.adoc
@@ -1274,7 +1274,7 @@
 * Liam Foy <mailto:liamfoy@sepulcrum.org[liamfoy@sepulcrum.org]>
 * Linh Pham <mailto:question+freebsdpr@closedsrc.org[question+freebsdpr@closedsrc.org]>
 * Loganaden Velvindron <mailto:logan@cyberstorm.mu[logan@cyberstorm.mu]>
-* Lon Willett <mailto:lon%softt.uucp@math.utah.edu[lon%softt.uucp@math.utah.edu]>
+* Lon Willett <mailto:lon%25softt.uucp@math.utah.edu[lon%softt.uucp@math.utah.edu]>
 * Loren J. Rittle <mailto:ljrittle@acm.org[ljrittle@acm.org]>
 * Loren M. Lang <mailto:lorenl@alzatex.com[lorenl@alzatex.com]>
 * Louis A. Mamakos <mailto:loiue@TransSys.com[loiue@TransSys.com]>
@@ -1368,7 +1368,7 @@
 * Martin Karlsson <mailto:martin.karlsson@visit.se[martin.karlsson@visit.se]>
 * Martin Klaffenboeck <mailto:martin.klaffenboeck@gmx.at[martin.klaffenboeck@gmx.at]>
 * Martin Kraft <mailto:martin.kraft@fal.de[martin.kraft@fal.de]>
-* Martin Kropfinger <mailto:freebsd@rakor-net.de>[freebsd@rakor-net.de>]>
+* Martin Kropfinger <mailto:freebsd@rakor-net.de[freebsd@rakor-net.de>]>
 * Martin Mersberger <mailto:gremlin@portal-to-web.de[gremlin@portal-to-web.de]>
 * Martin Minkus <mailto:diskiller@cnbinc.com[diskiller@cnbinc.com]>
 * Martin Neubauer <mailto:m.ne@gmx.net[m.ne@gmx.net]>