TeX - LaTeX Asked on March 3, 2021
I have done this:
begin{enumerate}
renewcommand{labelenumi}{textbf{S.theenumi}}
item a
item label{l} b
item c. goto ref{l}
end{enumerate}
The ref
just uses the enumerate number. But I want it to be the full enumerate
label.
I also could just type S.ref{l}
but that has the two disadvantages that
hyperref
, this doesn’t look so nice.How would be a clean/nice way to solve this?
You can use the enumitem
package:
documentclass{article}
usepackage{enumitem}
begin{document}
begin{enumerate}[label=textbf{S.arabic*}]
item a
item label{l} b
item c. goto ref{l}
end{enumerate}
end{document}
or
begin{enumerate}[label=textbf{S.arabic*},ref=S.arabic*]
item a
item label{l} b
item c. goto ref{l}
end{enumerate}
if you don't want the reference to be boldfaced.
Correct answer by Gonzalo Medina on March 3, 2021
For your attempt properly work, you need redefine the counter representation (theenumi
) as well as the label associated with it (labelenumi
). This separates the formatting from the counter when you're using ref
:
documentclass{article}
begin{document}
begin{enumerate}
renewcommand{labelenumi}{textbf{theenumi}}
renewcommand{theenumi}{S.arabic{enumi}}
item a
makeatletter
show@currentlabel
makeatother
item label{l} b
item c. goto ref{l}
end{enumerate}
end{document}
This also works nicely with hyperref
. However, in general, it is much easier to use enumitem
since it can be used in a global or localized setting using a key-value approach; very convenient.
Answered by Werner on March 3, 2021
With packages paralist works as well
documentclass{article}
begin{document}
usepackage{paralist}
begin{enumerate}[bfseries{S}.1]
item a
makeatletter
show@currentlabel
makeatother
item label{l} b
item c. goto ref{l}
end{enumerate}
end{document}
Answered by Bramau on March 3, 2021
For all counters in LaTeX (not needing packages) there is a macro p@counter used as a prefix in label/ref for that counter. So the matching set of definitions would be
makeatletter
renewcommand{labelenumi}{textbf{theenumi}}
renewcommand{theenumi}{S.arabic{enumi}}
renewcommand{p@enumi}{S.}
makeatother
The more natural way of doing it would be to leave theenumi as just the counter value, and put all adornment in the others
makeatletter
renewcommand{labelenumi}{textbf{S.theenumi}}
renewcommand{theenumi}{arabic{enumi}}
renewcommand{p@enumi}{S.}
makeatother
Answered by Donald Arseneau on March 3, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP