更清洁的替代方案,而不是丑陋的解决办法

更清洁的替代方案,而不是丑陋的解决办法

我正在用回忆录课编写问题表的解决方案。我想保留原始表格上的问题标签。

问题表 1

问题 1.13.1錯誤!

问题 1.13.2錯誤!

这是我这样做的方式(不整洁的 MWE):

\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}

丑陋的解决方法(1)用于\labelenumi强制枚举项出现在目录中。结果是我想要的,但有 hyperref 警告:

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.

我也不喜欢这个功能,那就是章节样式切换(2)。我希望章节(问题表)名称只出现在目录中,但我还希望保留较大的内容标题。回忆录有一个命令\renewcommand{\printchaptertitle}[1],允许关闭章节标题(但内容也是章节标题)。

有没有更清洁的方法来实现相同的结果?

PS 在回忆录手册第 88 页的默认值中\newcommand{\printchaptertitle}[1]{\chaptitlefont #1},上面的 MWE 出现错误(带有renewcommand),但##1事实并非如此(并且有效)。

答案1

这可能是一个解决方案:

\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}

在此处输入图片描述

在此处输入图片描述

相关内容