Skip to content
This repository has been archived by the owner on Jul 21, 2018. It is now read-only.

Change HTML Anchors to IDs (Named Anchors Aren't Valid HTML5) #36

Closed
tajmone opened this issue Nov 18, 2017 · 2 comments
Closed

Change HTML Anchors to IDs (Named Anchors Aren't Valid HTML5) #36

tajmone opened this issue Nov 18, 2017 · 2 comments

Comments

@tajmone
Copy link
Contributor

tajmone commented Nov 18, 2017

Currently, the --anchors options attaches a name attribute to <a> tags in linenumbers:

<a name="l_4"></a><span class="hl lin">  4 </span>  <span class="hl kwb">INC</span>

In HTML5 named anchors are not valid tags:

Differences Between HTML 4.01 and HTML5

In HTML 4.01, the tag could be either a hyperlink or an anchor. In HTML5, the tag is always a hyperlink, but if it has no href attribute, it is only a placeholder for a hyperlink.

HTML5 has some new attributes, and some HTML 4.01 attributes are no longer supported.

--- https://www.w3schools.com/tags/tag_a.asp

The <a> name attribute is not supported in HTML5. Use the id attribute instead.

--- https://www.w3schools.com/tags/att_a_name.asp

Highlight should drop the <a name=""> tag in favour of placing an Identifier directly on the line-number span (hl lin):

<span class="hl lin" id="l_4">  4 </span>  <span class="hl kwb">INC</span>

... or at least it should offer this alternative for HTML5-specific output --- it seems to me that using a <span id=""> would be valid also in HTML4:

-- https://www.quackit.com/html/html_4/tags/html_span_tag.cfm

But if for some backward compatiblity reasons (or to preserve output consistency in existing projects) the current line-numbers anchoring system should be preserved, it might be worth considering an additional option to target HTML5 specifically --- the introduction of this switch might also be a chance to introduce a more HTML5 compliant way of wrapping code blocks with <pre><code> tags (plus attributes targetting computer languages).

But for the <pre><code> tags problem, the --fragment options offers a workround. Not so for the line-numbers anchoring system, on which the users doesn't have much control (except, maybe, via some custom plugin).

HTML4 is becoming obsolete, and I think that Highlight should target valid HTML5 output via it's default options, so that its usage within projects should not affect the validity of their HTML5 syntax.

With the recent update to v2.0, pandoc changed the way it syntax highlights code in HTML (line numbers were previously achieved via tables, now dropped in favour of divs and spans with Ids), to catch up with HTML5 standards. Maybe pandoc could be a good reference point on how (X)HTML code should be formatted, as much thought and discussion as been going on during the last year regarding which HTML5 tags and attributes should be used for syntax highlighting code blocks. Of course, this forced pandoc to bump it's major version to 2.0, effectively marking a point bracking backward compatibilty --- but not doing so was causing more trouble to HTML5 complaint projects than updating existing scripts and templates.

For Highlight the case shouldn't be one of breaking backward compatiblity, if a new HTML5 format is added on top of the current HTML(4). But introducing this new format might require some careful thoughts, so that it's implemented at once with all it's requirements, or either gradually (as an experimental feature) and gets fine-tuned through actual usage and feedback.

Of course, changing the way line-numbering is achieved might have repercussions on CSS themes (but these could also comply to a new HTML5 option accordingly). The same could be said for standalone HTML5 documents, which could benefit from a newer HTML5 complaiant template.

Needless to say, I'm willing to contribute on this front.

@andre-simon
Copy link
Owner

andre-simon commented Nov 20, 2017

There should be no issues if <a name='xxx'> is replaced by an ID within a span, as referencing and using these links do not change. If you apply -O xhtml the attribute name is id instead of name. I forgot the name when I chnaged the default HTML output towards HTML5.

@andre-simon
Copy link
Owner

Done in v3.41.

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue May 3, 2018
-updated astyle code to release 3.1 (Rev. 655)
-added webkit reformatting style
-improved several language definitions
-fixed Matlab string recognition (andre-simon/highlight#61)
-fixed Autohotkey escape sequence recognition (thanks to Klaus Daube)
-added excel.lang (andre-simon/highlight#60)
-improved Qt pro file (andre-simon/highlight#59)
-CLI: added --reformat-option (andre-simon/highlight#62)
-CLI: added --line-range (andre-simon/highlight#64)
-GUI: added Bulgarian translation  (thanks to Georgi Sotirov)

-fixed HL_OUTPUT in Lua state for HL_FORMAT_XHTML and HL_FORMAT_TRUECOLOR values
-fixed lib-shared make target
-updated astyle code to release 3.1.0 beta
-added Polygen and EBNF2 syntax definitions (thanks to Tristano Ajmone)
-added pywal terminal colouring template in extras/pywal
-added reformatting style ratliff (replaces banner)
-added extras/langDefs-resources/cleanslate.lang (thanks to Tristano Ajmone)
-improved Perl6 compatibility
-improved PHP string interpolation
-improved Haskell definition (andre-simon/highlight#52)
-CLI: added --canvas option to define background color padding in ANSI output
  (andre-simon/highlight#40)
-GUI: added French translation (thanks to Antoine Belvire)
-GUI: added Scripts tab (suggested by Tristano Ajmone)
-GUI: minor bugfixes

-renamed examples directory to extras
-line anchors (-a) are attached as id attribute to the first span or li tag in
  HTML output (andre-simon/highlight#36)
-renamed ID prefix in outhtml_codefold plug-in to be compatible with -a IDs
-added fstab.lang and added anacrontab in filetypes.conf
-removed references to OutputType::HTML32
-added extras/css-themes and extras/langDefs-resources
  (thanks to Tristano Ajmone)
-CLI: removed deprecated indicator of --data-dir option
-CLI: added --no-version-info option
-GUI: fixed initial theme selection
-GUI: added "Omit version info comment" option
-GUI: added "Copy with MIME type" option for HTML output
  (andre-simon/highlight#32)

-fixed Ruby string parsing (thanks to Jens Schleusener)
-fixed segfault on sparc64 (patch by James Clarke)
-fixed PureBasic definition (andre-simon/highlight#25)
-added CMake definition (andre-simon/highlight#20)
-added email definition (andre-simon/highlight#21)
-linked scm suffix to lisp definition
  (andre-simon/highlight#22)
-W32 CLI: support HIGHLIGHT_DATADIR and --data-dir options
  (andre-simon/highlight#24)
-revised documentation

-added syntax for Docker and Elixir
-improved HTML, Julia, Kotlin and Smalltalk syntax definitions
-GUI: added "Paste, Convert and Copy" button
  (https://sourceforge.net/p/syntaxhighlight/support-requests/4/)

-fixed Bash variable highlighting issue
-updated astyle code to release 3.0.1 (https://sourceforge.net/p/astyle/bugs/438)
-added bash_ref_man7_org.lua plugin

-fixed Perl string highlighting issue
-fixed highlighting if a line continues after the nested code delimiter
-updated astyle code to release 3.0
-added examples/pandoc (thanks to Tristano Ajmone)
-added syntax mapping for markdown
  (andre-simon/highlight#11)
-added syntax mapping for clj
  (andre-simon/highlight#15)
-improved Java definition (andre-simon/highlight#13)
-added theme to JSON converter in  examples/json
  (andre-simon/highlight#8)
-CLI: added support for environment variable HIGHLIGHT_OPTIONS
  (andre-simon/highlight#17)

-fixed code folding plugin to support more Ruby conditional modifiers
  (thanks to Jens Schleusener)
-fixed Perl quoted string highlighting (thanks to Jens Schleusener)
-added new GeneratorOverride syntax definition parameter
-added Filenames parameter in filetypes.conf to assign input filenames
  to syntax types (suggested by Andy)
-added FASM definition and edit-fasm theme (thanks to Tristano Ajmone)
-added outhtml_ie7_webctrl plug-in (suggested by Tristano Ajmone)
-GUI: file extensions can be configured for multiple languages,
  triggers syntax selection prompt
-GUI: added Italian translation (thanks to Tristano Ajmone)

-fixed code folding plugin to support Ruby conditional modifiers
-fixed JSON definition (thanks to Timothee Cour)
-fixed output of unknown syntax warning with applied force switch
  (thanks to Andy)
-added state trace parameter to Decorate plug-in function
-added GDScript definition and edit-godot theme (thanks to Tristano Ajmone)
-updated SWIG code samples
-updated Artistic Style lib (SVN Rev. 553)
-revised docs
-CLI: fixed creation of hidden files if output filename is prepended by its
  input path
-CLI: added switch --stdout (https://sourceforge.net/p/syntaxhighlight/bugs/14)

-fixed segfault with --skip applied on a single file input list
  (thanks to Jens Schleusener)
-added support for Python 3.6 syntax
-added Github and Sourceforge themes

-fixed highlighting of nested section delimiters
-fixed PHP definition (thanks to Christoph Burschka)
-fixed font family declaration in SVG
-fixed user defined encoding in ODT
-fixed unnecessary output of style file with --inline-css
  (thanks to Jens Schleusener)
-added vimscript language definition (thanks to Max Christian Pohle)
-added Coffeescript language definition (thanks to Jess Austin)
-added PureBasic definition and theme (thanks to Tristano Ajmone)
-added JSX language definition (suggested by Max Stoiber)
-added PO translation definition
-added plug-in outhtml_add_figure.lua
-updated js definition
-updated Artistic Style lib (SVN Rev. 521)
-improved various color themes and syntax definitions

-added support for true color escape codes (--out-format truecolor)
-fixed xterm256 output for paging with less (thanks to Fylwind)
-fixed operator regex in rnc.lang, crk.lang and yaml.lang (thanks to Joe Klauza)
-added Pony and Whiley definitions
-updated Ceylon, Julia and TypeScript definitions
-added Go, AutoHotKey, TypeScript and R to the foldable list in the
  outhtml_codefold.lua plug-in
-removed plugins/bash_ref_linuxmanpages_com.lua
-GUI: fixed README, ChangeLog and License file paths on Linux

-revised documentation
-GUI: fixed minor layout issues

-the data directory can be defined with the HIGHLIGHT_DATADIR environment variable
-fixed RTF output of UTF-8 input; needs input encoding set to utf-8
  (thanks to Kamigishi Rei)
-fixed XML comment recognition (thanks to Mani)
-data search directories were appended to the result of --list-scripts
-revised older syntax definitions
-updated base URLs of bash_ref_linuxmanpages and cpp_ref_qtproject plug-ins
-GUI: added system copy and paste shortcuts for clipboard functions
  (suggested by Kamigishi Rei)

-added Ansible Yaml definition (thanks to Raphael Droz)
-added Chapel definition (thanks to Lydia Duncan)
-fixed gcc 6 warnings about deprecated auto_ptr usage
-src/makefile: added -std=c++11 because of auto_ptr to unique_ptr transition
  (thanks to Jens Schleusener)
-GUI: fixed style file output if "write to source directory" option is
  checked (thanks to Jim Pattee)

-added support of Pascal, Lua, Ruby and C# regions in outhtml_codefold.lua
-improved outhtml_codefold.lua to handle embedded languages
-added string delimiters in the Ruby definition
-added new AssertEqualLength flag in string section of language definitions
-improved heredoc parsing
-fixed Lua multiline string recognition
-improved SVG whitespace output (patch by Paul de Vrieze)
-added Nim and mIRC Scripting definitions

-improved outhtml_codefold.lua to ignore brackets on the same line
-added RTF output to mark_lines.lua
-fixed Powershell and NSIS definitions
-added JSON and Github Markdown definitions
-CLI: added --keep-injections option to force plugin injection output with -f
-GUI: added keep injections checkbox
-GUI: fixed crash after removing selected plugins

-added HL_REJECT state to be used in a OnStateChange function
-added DecorateLineBegin and DecorateLineEnd hooks
-added mark_lines.lua, outhtml_codefold.lua, comment_links.lua plug-ins
-fixed font face in ODT output
-fixed Operators parameter in frink.lang and oorexx.lang
-fixed regular expression parsing within strings for JS, Perl and Ruby
-CLI: added --page-color option to include a page color in RTF output
-GUI: added RTF page color checkbox

-added new SVG definition to support embedded scripting
-improved js.lang, css.lang, scss.lang, less.lang, tsql.lang
-modified HTML ordered list output to work better with new plug-ins
-renamed plug-in variable HL_INPUT_FILE to HL_PLUGIN_PARAM
-CLI: renamed --plug-in-read option to --plug-in-param
-GUI: updated plug-in parameter label and tool-tips
-GUI: fixed minor issues

-fixed TeX output for cweb documents (patch by Ingo Krabbe)
-fixed string interpolation in bat.lang
-added reduce_filesize.lua, outhtml_add_shadow.lua,
  outhtml_add_background_svg.lua, outhtml_add_background_stripes.lua,
  outhtml_add_line.lua plug-ins
-added TCL extension in examples/tcl
-added kotlin.lang, nginx.lang and julia.lang
-updated php.lang to include version 7 keywords
-updated ceylon.lang to include version 1.2 keywords
-updated scripts in examples directory
-CLI: style-infile option marked as deprecated
-GUI: shortened paths in file input lists

-added rs.lang
-added conf.lang (thanks to Victor Ananjevsky)
-added some extensions in filetypes.conf (patch by Victor Ananjevsky)
-fixed Matlab definition and style (thanks to Justin Pearson)
-CLI: fixed --list-scripts with unknown argument (thanks to Jens Schleusener)

-updated astyle code to release 2.05.1
-fixed shebang recognition (thanks to Victor Ananjevsky)
-GUI: added option to define line numbering start

-added support for LESS, SASS and Stylus CSS processors (suggested by Marcel Bischoff)
-added support for Lua 5.3, removed LUA52 makefile option
-fixed heredoc matching in perl.lang (thanks to cornucopia)
-fixed Haskell lang (thanks to Daan Michiels)
-fixed RNC lang (thanks to Daan Michiels)
-fixed regex pattern in js.lang

-updated astyle code to release 2.05
-added astyle reformatting style vtk

-added bold, italic and underline attributes to xterm256 ANSI output
  (patch by Andrew Fuller)
-fixed assembler mapping in filetypes.conf (thanks to Jens Schleusener)
-added Swift definition
-improved ASP, F#, OCaml and Lisp syntax definitions
-added interpolation patterns to several definitions
-updated base URLs in cpp_ref_gtk_gnome and cpp_ref_qtproject plug-ins
-CLI: added Pango markup output option (patch by Dominik Schmidt)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants