避免在格式简单的文档中使用多个标签引用

避免在格式简单的文档中使用多个标签引用

我想建立一个包含许多数学问题和解决方案的文件,例如:

问题

  1. ...

  2. ...

...

解决方案

  1. ...

  2. ...

...

我想在问题和相应的解决方案之间来回链接,反之亦然。特别是,如果能够单击问题编号(1.、2.、...)并使其跳转到相应的解决方案,反之亦然,那就太好了。

有没有办法做到这一点,而不必为每个问题和解决方案重复输入label-ref?

答案1

在这里,我定义了\addProblemPlusSolution{}{}来定义问题/解决方案集,然后\showProblemsThenSolutions按顺序输出所有问题,然后是所有解决方案,并前后使用超链接引用。\labels 和不是\ref由用户明确放置的,而是由 自动生成的\showProblemsThenSolutions

除了为每个问题和解决方案分别创建一个新的格式外,我没有在格式上做任何特别的事情\subsection*。但是,可以在问题和解决方案之间添加分页符、附加部分等。

我使用 Werner 的标签解决方案(\mynameis宏)如何强制标签为给定的字符串?

\documentclass{article}
\usepackage{hyperref}
\usepackage{lipsum}
\usepackage{ifthen}
\makeatletter
\newcommand{\mynameis}[1]{%
  \phantomsection#1% Mark hyperlink
  \renewcommand{\@currentlabel}{#1}%
  \renewcommand{\@currentlabelname}{#1}}
\makeatother
\newcounter{probcount}
\newcounter{pcindex}
\newcommand\addProblemPlusSolution[2]{%
  \stepcounter{probcount}
  \expandafter\def\csname P\romannumeral\theprobcount\endcsname{#1}%
  \expandafter\def\csname S\romannumeral\theprobcount\endcsname{#2}%
}
\newcommand\showProblemsThenSolutions{%
  \setcounter{pcindex}{0}%
  \whiledo{\thepcindex < \theprobcount}{%
    \stepcounter{pcindex}%
    \subsection*{\mynameis{Problem \thepcindex}%
                 \label{LP\romannumeral\thepcindex}
                 {\small\mdseries(see \ref{LS\romannumeral\thepcindex})}}

    \csname P\romannumeral\thepcindex\endcsname
  }%
  \setcounter{pcindex}{0}%
  \whiledo{\thepcindex < \theprobcount}{%
    \stepcounter{pcindex}%
    \subsection*{\mynameis{Solution \thepcindex}%
                 \label{LS\romannumeral\thepcindex}
                 {\small\mdseries(see \ref{LP\romannumeral\thepcindex})}}

    \csname S\romannumeral\thepcindex\endcsname
  }%
}
\begin{document}
\addProblemPlusSolution
{
  \lipsum[1-3]

  \[ y = mx + b\]
}{
  \[ m = 3, \quad b = 12 \]

  \lipsum[3-4]
}
\addProblemPlusSolution
{
  \lipsum[2-3]

  \[E = mc^2\]
}{
  \[ c = 186,000 \textrm{mi/s} \]

  \lipsum[4]
}

\showProblemsThenSolutions
\end{document}

在此处输入图片描述


在此处输入图片描述

相关内容