diff --git a/CHANGES b/CHANGES index 74dc980f5..46fe00fa9 100644 --- a/CHANGES +++ b/CHANGES @@ -68,6 +68,7 @@ Features added ``no-scaled-link`` class * #7144: Add CSS class indicating its domain for each desc node * #7211: latex: Use babel for Chinese document when using XeLaTeX +* #7005: LaTeX: Add LaTeX styling macro for :rst:role:`kbd` role * #7220: genindex: Show "main" index entries at first * #7103: linkcheck: writes all links to ``output.json`` * #7025: html search: full text search can be disabled for individual document diff --git a/doc/latex.rst b/doc/latex.rst index dd5fd1679..59a785c1e 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -817,6 +817,8 @@ Macros multiple paragraphs in header cells of tables. .. versionadded:: 1.6.3 ``\sphinxstylecodecontinued`` and ``\sphinxstylecodecontinues``. + .. versionadded:: 3.0 + ``\sphinxkeyboard`` - ``\sphinxtableofcontents``: it is a wrapper (defined differently in :file:`sphinxhowto.cls` and in :file:`sphinxmanual.cls`) of standard ``\tableofcontents``. The macro diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 714d98e05..63676d46d 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -1837,6 +1837,7 @@ \protected\def\sphinxtitleref#1{\emph{#1}} \protected\def\sphinxmenuselection#1{\emph{#1}} \protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxkeyboard#1{\sphinxcode{#1}} \protected\def\sphinxaccelerator#1{\underline{#1}} \protected\def\sphinxcrossref#1{\emph{#1}} \protected\def\sphinxtermref#1{\emph{#1}} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 7a8822585..317b74fdb 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1720,6 +1720,8 @@ class LaTeXTranslator(SphinxTranslator): def visit_literal(self, node: Element) -> None: if self.in_title: self.body.append(r'\sphinxstyleliteralintitle{\sphinxupquote{') + elif 'kbd' in node['classes']: + self.body.append(r'\sphinxkeyboard{\sphinxupquote{') else: self.body.append(r'\sphinxcode{\sphinxupquote{') diff --git a/tests/test_markup.py b/tests/test_markup.py index edf4d7379..b6d99db90 100644 --- a/tests/test_markup.py +++ b/tests/test_markup.py @@ -230,6 +230,13 @@ def get_verifier(verify, verify_re): '
Foo
', r'\sphinxguilabel{Foo}', ), + ( + # kbd role + 'verify', + ':kbd:`space`', + 'space
', + '\\sphinxkeyboard{\\sphinxupquote{space}}', + ), ( # non-interpolation of dashes in option role 'verify_re',