![Alternativas mais limpas para soluções alternativas feias](https://rvso.com/image/400358/Alternativas%20mais%20limpas%20para%20solu%C3%A7%C3%B5es%20alternativas%20feias.png)
Estou escrevendo soluções para folhas de problemas com aula de memórias. Quero manter as etiquetas dos problemas nas folhas originais.
Folha de problemas 1
problema 1.13.1Lorem ipsum...
problema 1.13.2Lorem ipsum...
Aqui está a minha maneira de fazer isso (MWE desarrumado):
\documentclass[extrafontsizes,oneside,20pt]{memoir}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage{memhfixc}
% ugly workaround (1)
\newcommand{\sectionitem}{%
\item\phantomsection\addcontentsline{toc}{section}{%
\let\sectionitemfont\relax%
\labelenumi%
\let\sectionitemfont\bfseries%
}%
}
\def\mychapter{Problem sheet}
\makechapterstyle{mine}{%
\renewcommand{\printchaptername}{\chapnumfont \mychapter}
\renewcommand{\printchaptertitle}[1]{}
}
\renewcommand*{\cftchaptername}{\mychapter\space}
\begin{document}
\clearpage
\chapterstyle{default} % (2)
\tableofcontents
\clearpage
\chapterstyle{mine} % (2)
\let\sectionitemfont\bfseries
\chapter{A}
\begin{enumerate}[
leftmargin=*,
label=\sectionitemfont problem 1.13.\arabic*
]
\sectionitem Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\\
\textbf{solution}
\sectionitem Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\\
\textbf{solution}
\sectionitem Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\\
\textbf{solution}
\end{enumerate}
\end{document}
Uma solução alternativa feia (1)
é usada \labelenumi
para forçar a enumeração do item a aparecer no ToC. O resultado é o que eu quero, mas há avisos de hiperref:
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\<let>-command' on input line 39.
Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref) removing `\sectionitemfont' on input line 39.
O que também não gosto nisso é a troca de estilo de capítulo (2)
. Quero que os nomes dos capítulos (folhas de problemas) apareçam apenas no ToC, mas também quero manter nomes grandesConteúdotítulo. Memoir possui comando \renewcommand{\printchaptertitle}[1]
que permite desligar títulos de capítulos (masConteúdotambém é o título do capítulo).
Existem maneiras mais limpas de alcançar o mesmo resultado?
PS No manual de memórias, o padrão \newcommand{\printchaptertitle}[1]{\chaptitlefont #1}
na página 88, dá erro no MWE acima (com renewcommand
), mas ##1
não dá (e funciona).
Responder1
Esta poderia ser uma solução:
\documentclass[extrafontsizes,oneside,20pt]{memoir}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage{memhfixc}
\newenvironment{probsol}[1][\thesection]{\begin{enumerate}[leftmargin=*,
label=\sectionitemfont#1.\arabic{enumi}]\let\olditem\item\def\item{\olditem\addcontentsline{toc}{section}{#1.\arabic{enumi}}}}
{\end{enumerate}}
\def\mychapter{Problem sheet}
\makechapterstyle{mine}{%
\renewcommand{\printchaptername}{\chapnumfont \mychapter}
\renewcommand{\printchaptertitle}[1]{}
}
\begin{document}
\clearpage
\chapterstyle{default} % (2)
\tableofcontents
\clearpage
\chapterstyle{mine} % (2)
\let\sectionitemfont\bfseries
\chapter{A}
\begin{probsol}[problem 1.13]
\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\\
\textbf{solution}
\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\\
\textbf{solution}
\item Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\\
\textbf{solution}
\end{probsol}
\end{document}