我正在使用枚举环境创建书中任务答案列表,其中项目标签是任务的编号。我想在标签项目正下方放置任务所在的页码。
这就是我现在所拥有的:
\documentclass[a4paper,14pt,oneside]{extbook}
\usepackage{enumitem}
\usepackage[many]{tcolorbox}
\usepackage{hyperref}
\hypersetup{unicode = true,colorlinks=true,linkcolor={red},pageanchor = false}
% Defining custom tcolorbox environment
\newtcolorbox[auto counter,number within=chapter]{task}[1][]{%
title=\thetcbcounter,#1
}
\begin{document}
\begin{task}[label={task0.1}]
Task condition
\end{task}
\begin{task}[label={task0.2}]
Task condition
\end{task}
\begin{task}[label={task0.3}]
Task condition
\end{task}
% List with tasks answers
\begin{enumerate}
\item [\textbf{0.1}\\{\small p.\pageref{task0.1}}] Task 0.1 answer
\item [\textbf{0.2}\\{\small p.\pageref{task0.2}}] Task 0.2 answer
\item [\textbf{0.3}\\{\small p.\pageref{task0.3}}] Task 0.3 answer
\end{enumerate}
\end{document}
它的外观如下:
如您所见,双反斜杠\\
符号和\newline
命令在这里不起作用。
如何将第 1 页移至任务编号下的下一行?
还有一件事。有没有办法通过标签获取 tcolobox“任务”计数器,以便不明确写出任务编号?
答案1
首先,我更改了您的标签,因为在标签中包含数字从来都不是一个好主意。然后要获取数字,请使用\ref{label}
。要获取任务编号下方的页码,您可以使用\raisebox
适当的设置。在这里我只是降低了它0.8em
并将高度和深度都设置为0pt
。如果不抑制垂直空间,答案的第一行和第二行之间将有一个空间。最后,我在命令中将页码设置\rlap
为不占用水平空间。所以实际上页码根本不应该占用任何空间。
\documentclass[a4paper,14pt,oneside]{extbook}
\usepackage{calc}
\usepackage{enumitem}
\usepackage[many]{tcolorbox}
\usepackage{hyperref}
\hypersetup{unicode = true,colorlinks=true,linkcolor={red},pageanchor = false}
% Defining custom tcolorbox environment
\newtcolorbox[auto counter,number within=chapter]{task}[1][]{%
title=\thetcbcounter,#1
}
\begin{document}
\begin{task}[label={easy}]
Task condition
\end{task}
\begin{task}[label={hard}]
Task condition
\end{task}
\begin{task}[label={impossible}]
Task condition
\end{task}
% List with tasks answers
\newcommand\specialitemlabel[1]{\raisebox{-0.8em}[0pt][0pt]{\rlap{\small p.\pageref{#1}}}\textbf{\ref{#1}}}
\begin{enumerate}
\item [\specialitemlabel{easy}] Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer Task 0.1 answer
\item [\specialitemlabel{hard}] Task 0.2 answer
\item [\specialitemlabel{impossible}] Task 0.3 answer
\end{enumerate}
\end{document}
答案2
要将 p.1 移动到下一行,您只需使用\setlist[description]{style = multiline}
。
代码:
\documentclass[a4paper,14pt,oneside]{extbook}
\usepackage{enumitem}
\setlist[description]{style = multiline}
\usepackage[many]{tcolorbox}
\usepackage{hyperref}
\hypersetup{unicode = true,colorlinks=true,linkcolor={red},pageanchor = false}
% Defining custom tcolorbox environment
\newtcolorbox[auto counter,number within=chapter]{task}[1][]{%
title=\thetcbcounter,#1
}
\begin{document}
\begin{task}[label={task0.1}]
Task condition
\end{task}
\begin{task}[label={task0.2}]
Task condition
\end{task}
\begin{task}[label={task0.3}]
Task condition
\end{task}
% List with tasks answers
\begin{description}
\item [\textbf{0.1}\\{\small p.\pageref{task0.1}}] Task 0.1 answer
\vspace{.5cm}
\item [\textbf{0.2}\\{\small p.\pageref{task0.2}}] Task 0.2 answer
\vspace{.5cm}
\item [\textbf{0.3}\\{\small p.\pageref{task0.3}}] Task 0.3 answer
\end{description}
\end{document}
得出:
答案3
您可以创建一个 parbox 并使用 calc 提供的 \widthof 来实现这一点:
\documentclass[a4paper,14pt,oneside]{extbook}
\usepackage{calc}
\usepackage{enumitem}
\usepackage[many]{tcolorbox}
\usepackage{hyperref}
\hypersetup{unicode = true,colorlinks=true,linkcolor={red},pageanchor = false}
% Defining custom tcolorbox environment
\newtcolorbox[auto counter,number within=chapter]{task}[1][]{%
title=\thetcbcounter,#1
}
\newcommand{\myitem}[2]{%
\item[\parbox{\widthof{\textbf{#1}\\{\small p.\pageref{#2}}}}{\textbf{#1}\\{\small p.\pageref{#2}}}]
}
\begin{document}
\begin{task}[label={task0.1}]
Task condition
\end{task}
\begin{task}[label={task0.2}]
Task condition
\end{task}
\begin{task}[label={task0.3}]
Task condition
\end{task}
% List with tasks answers
\begin{enumerate}
\myitem{0.1}{task0.1} Task 0.1 answer
\myitem{0.2}{task0.2} Task 0.2 answer
\myitem{0.3}{task0.3} Task 0.3 answer
\end{enumerate}
\end{document}
我不明白你第二个问题中关于“任务”的意思。你能详细解释一下吗?