![文件夹路径中的上级部分自动引用](https://linux22.com/image/354944/%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84%E4%B8%AD%E7%9A%84%E4%B8%8A%E7%BA%A7%E9%83%A8%E5%88%86%E8%87%AA%E5%8A%A8%E5%BC%95%E7%94%A8.png)
请注意,这个问题的焦点略有变化。请参阅我的回答以获取进一步说明!
我想根据我在文档中放置特定内容的具体位置来创建某些引用/链接。虽然实际链接看起来运行良好,但我对所需的呈现方式存在问题。
假设我的电脑上有两个文件夹“当前项目”和“已完成项目”,文档中也有相应的部分(或段落或其他内容)。现在的目标是只需将一行代码从一个部分复制到另一个部分,即可更改引用。这是通过 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}%
和问题中的代码一起,它就像魔法一样工作!当然,如果引入了新的标签,它确实需要运行几次。