Tab stop#Dynamic tab stops

{{Redirect|Fixed width|the class of fonts with fixed character widths|monospaced font}}

{{use dmy dates|date=September 2024}}

{{More citations needed|date=January 2008}}

File:LibreOffice Writer 6.4 (cropped).png

A tab stop on a typewriter is a location where the carriage movement is halted by an adjustable end stop. Tab stops are set manually, and pressing the tab key causes the carriage to go to the next tab stop. In text editors on a computer, the same concept is implemented simplistically with automatic, fixed tab stops.

Modern word processors generalize this concept by offering tab stops that have an alignment attribute and cause the text to be automatically aligned at left, at right or center of the tab stop itself. Such tab stops are paragraph-specific properties and can be moved to a different location in any moment, or even removed.

Sometimes, placeholders in code snippets are also called "tab stops" because the user can cycle through them by pressing the tab key.{{cite web |title=Snippets |url=https://macromates.com/manual/en/snippets |website=TextMate 1.5.1 Manual |access-date=1 November 2021 |archive-date=1 November 2021 |archive-url=https://web.archive.org/web/20211101143029/https://macromates.com/manual/en/snippets |url-status=live }}

Types of tab stops

A tab stop is a horizontal position which is set for placing and aligning text on a page. There are at least five kinds of tab stops in general usage in word processing or in Microsoft Word.

;Left: text extends to the right from the tab stop.

;Center: text is centered at the tab stop.

;Right: text extends to the left from the tab stop until the tab's space is filled, and then the text extends to the right.

;Decimal: text before the decimal point extends to the left, and text after the decimal point extends to the right.

;Bar: a vertical line at the specified position on each line in a document.

Dynamic tab stops

In contrast to fixed positioning, tab stops can be adjusted dynamically, based on the length of adjacent tab-delimited line segments, by alignment to a specific character or string in each line, etc. Adobe InDesign supports a non-printing "indent to here" character.

In 2006, Nick Gravgaard published an algorithm for automatic dynamic tab stops called "Elastic tabstops".{{Cite web |url=https://nick-gravgaard.com/elastic-tabstops/ |title=Elastic tabstops |access-date=2023-09-27 |archive-date=2024-09-21 |archive-url=https://web.archive.org/web/20240921164344/https://nick-gravgaard.com/elastic-tabstops/ |url-status=live }} This can be useful for viewing/editing source code and is naturally essential for tabular data.{{Cite web |url=https://tibleiz.net/code-browser/elastic-tabstops.html |title=Code Browser - Elastic Tabstops |access-date=2022-04-21 |archive-date=2024-09-21 |archive-url=https://web.archive.org/web/20240921164346/https://tibleiz.net/code-browser/elastic-tabstops.html |url-status=live }} Various text editors and IDEs have implemented the elastic tabstops algorithm either directly or by extension.

= Software which supports elastic tabstops =

  • Visual Studio[https://www.alwaysaligned.net Always Aligned] {{Webarchive|url=https://web.archive.org/web/20171005141155/http://www.alwaysaligned.net/ |date=2017-10-05 }}{{Cite web |url=https://github.com/nick-gravgaard/AlwaysAlignedVS |title=Always Aligned repository |website=GitHub |access-date=2023-09-27 |archive-date=2024-09-21 |archive-url=https://web.archive.org/web/20240921164446/https://github.com/nick-gravgaard/AlwaysAlignedVS |url-status=live }}
  • Atom[https://atom.io/packages/elastic-tabstops Elastic Tabstops package for Atom]
  • Textadept[https://github.com/joshuakraemer/textadept-elastic-tabstops Elastic Tabstops for Textadept]
  • Code Browser
  • JEdit{{Cite web |url=http://www.jedit.org/users-guide/indent.html#elastic-tabstops |title=JEdit - Elastic Tabstops |access-date=2022-04-21 |archive-date=2022-02-20 |archive-url=https://web.archive.org/web/20220220075324/http://www.jedit.org/users-guide/indent.html#elastic-tabstops |url-status=live }}
  • Notepad++{{Cite web |url=https://github.com/dail8859/ElasticTabstops |title=Elastic Tabstops plugin for Notepad++ |website=GitHub |access-date=2021-04-15 |archive-date=2020-12-24 |archive-url=https://web.archive.org/web/20201224070223/https://github.com/dail8859/ElasticTabstops |url-status=live }}
  • Go tabwriter packageGo (programming language) [http://golang.org/pkg/tabwriter/ tabwriter package] {{Webarchive|url=https://web.archive.org/web/20240921164519/https://pkg.go.dev/text/tabwriter |date=2024-09-21 }}
  • Rust tabwriter crate{{Cite web |url=https://crates.io/crates/tabwriter |title=Elastic tabs for Rust |access-date=2024-08-21 |archive-date=2024-08-21 |archive-url=https://web.archive.org/web/20240821224355/https://crates.io/crates/tabwriter |url-status=live }}
  • Emacs{{Cite web |url=https://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation.html |title=Emacs Manual - Indentation |access-date=2023-09-27 |archive-date=2023-09-27 |archive-url=https://web.archive.org/web/20230927012238/https://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation.html |url-status=live }}
  • [https://nick-gravgaard.com/elastic-tabstops/#current-implementations list of current implementations] on Nick Gravgaard'r webiste

See also

References