文件夹路径中的上级部分自动引用

文件夹路径中的上级部分自动引用

请注意,这个问题的焦点略有变化。请参阅我的回答以获取进一步说明!

我想根据我在文档中放置特定内容的具体位置来创建某些引用/链接。虽然实际链接看起来运行良好,但我对所需的呈现方式存在问题。

假设我的电脑上有两个文件夹“当前项目”和“已完成项目”,文档中也有相应的部分(或段落或其他内容)。现在的目标是只需将一行代码从一个部分复制到另一个部分,即可更改引用。这是通过 zref-titleref 包实现的,例如,结合使用 hyperref(功能部分)和(如果可能)menukeys(演示部分)。然而,menukeys 的目录路径总是中断,我无法找到一种方法来使它的两个方面都按预期工作。

请看一下以下代码:

    \documentclass{article}

    \usepackage{catchfilebetweentags}

    \newcommand{\loadProject}[1]{\ExecuteMetaData["C:/Users/Pippo/Documents/Projects/Current Projects/Projectcontent.tex"]{#1}}

    \usepackage[os=win]{menukeys}
    \renewmenumacro{\menu}[>]{roundedmenus} % default: menus
    \renewmenumacro{\directory}[/]{hyphenatepathswithfolder} % default: paths
    \renewmenumacro{\keys}[+]{shadowedroundedkeys} % default: roundedkeys

    \usepackage{zref-titleref}

    \makeatletter
    \newcommand*{\currentname}{\zref@getcurrent{title}}
    \makeatother

    \usepackage{hyperref}

    \begin{document}

    \section{Current Projects}

    \loadProject{proj:Project 1}

    \section{Finished Projects}

    \end{document}

在 catchfilebetweentags 文件中,类似

   %<*proj:Project1>

   \href{run:C:/Users/Pippo/Documents/Projects/\currentname/.}{\directory{C:/Users/Pippo/Documents/Projects/\currentname}}

   %</proj:Project1>

是否有可能让它工作并按应有的方式排版链接。请注意,menukeys 字符串通常在超链接中起作用,并且还有其他包允许引用部分名称(请参阅https://tex.stackexchange.com/a/75183/91897),但到目前为止我还没有找到解决方案。

答案1

我没有立即发布这个答案,因为经过微小的修改后,上面的代码已经运行并获得了当时所需的结果。但我发现这对我想要做的事情来说并不明智......字符串\currentname实际上应该停留在节级别,而不是每次引入新的子节时都引用当前标签。

为了实现这一点我把

\newcommand{\thirdoffive}[5]{#3}
\newcommand{\assignnameref}[2]{%
   \gdef#2{}% Assign macro to be blank
 \ifcsname r@#1\endcsname%
\xdef#2{\expandafter\expandafter\expandafter\thirdoffive\csname r@#1\endcsname}%
\fi
}

在序言中。相关章节的开头是

 \subsection{Current Projects}\label{sec:curProjects}
 \assignnameref{sec:curProjects}{\currentname}%

和问题中的代码一起,它就像魔法一样工作!当然,如果引入了新的标签,它确实需要运行几次。

相关内容