我的文档结构如下:
I. Example-heading
1. Example-subheading
2. Example-subheading 2
a) Example-subsubheading
b) Example-subsubheading 2
(aa) Example-subsubsubheading
(bb) Example-subsubheading 2
...
...
...
II. Example-heading 2
1. Example2-subheading
当我现在使用
\subthreesection{Example-subsubsubheading}\label{my-label}
后来在文本中的某个地方
\ref{my-label} \nameref{my-label}
输出如下
(aa)示例-subsubsubheading
但我希望
I.2.a).(aa) 示例-子子标题
并且不仅适用于第三级,还适用于七级或更深级别。
我正在使用文档类汝拉工坊(汝拉学生论文的文档类别)。
我怎样才能实现这个目标?
答案1
由于您使用hausarbeit-jura
文档类,我建议您修改“前缀宏” \p@subsection
,\p@subsubsection
和\p@subthreesection
。具体来说,您应该在序言中插入以下说明:
\makeatletter
\renewcommand\p@subsection{\thesection}
\renewcommand\p@subsubsection{\p@subsection\thesubsection}
\renewcommand\p@subthreesection{\p@subsubsection\thesubsubsection.}
\renewcommand\p@subfoursection{\p@subthreesection\thesubthreesection.}
\renewcommand\p@subfivesection{\p@subfoursection\thesubfoursection.}
\renewcommand\p@subsixsection{\p@subfivesection\thesubfivesection.}
\makeatother
评论:除了您在最初发帖中要求的那些之外,我还添加了三个额外的交叉引用前缀宏级别。我相信您有足够的信息来继续执行第七和第八级别以及段落和小段落...
完整的 MWE:
\documentclass{hausarbeit-jura}
\usepackage[colorlinks]{hyperref} % for \nameref macro
\makeatletter % use a recursive approach to define the prefix macros:
\renewcommand\p@subsection{\thesection}
\renewcommand\p@subsubsection{\p@subsection\thesubsection}
\renewcommand\p@subthreesection{\p@subsubsection\thesubsubsection.}
\renewcommand\p@subfoursection{\p@subthreesection\thesubthreesection.}
\renewcommand\p@subfivesection{\p@subfoursection\thesubfoursection.}
\makeatother
\begin{document}
level-1 sub: \ref{my-label1} \nameref{my-label1}
level-2 sub: \ref{my-label2} \nameref{my-label2}
level-3 sub: \ref{my-label3} \nameref{my-label3}
level-4 sub: \ref{my-label4} \nameref{my-label4}
level-5 sub: \ref{my-label5} \nameref{my-label5}
etc.
\section{Section heading}
\subsection{Subsection heading} \label{my-label1}
\subsubsection{Subsubsection heading} \label{my-label2}
\subthreesection{Subthree-heading} \label{my-label3}
\subfoursection{Subfour-heading} \label{my-label4}
\subfivesection{Subfive-heading} \label{my-label5}
\end{document}
答案2
除了编号样式(必须以不同的方式设置,这是不同的zref
问题)当需要链接时,可以使用 轻松实现参考样式的“收缩” ,只需\label
替换zlabel
并设置一个\fullref
提取链接的锚点、默认值和标题的命令即可。
\documentclass{book}
\usepackage{hyperref}
\usepackage[user,hyperref,titleref]{zref}
\makeatletter
\newcommand{\fullref}[1]{%
% Check for existence and provide a hyperlink
\zref@ifrefundefined{#1}{%
}{%
\hyperlink{\zref@extract{#1}{anchor}}{\zref@extract{#1}{default} \zref@extract{#1}{title}}%
}%
}
\makeatother
\begin{document}
See \fullref{my-label}
\chapter{Example-heading}
\section{Example-subheading}
\section{Example-subheading 2}
\subsection{Example subsubheading}
\subsubsection{Example subsubheading}
\subsubsection{Example subsubheading 2} \zlabel{my-label}
\chapter{Example-heading 2}
\section{Example-subheading again}
\end{document}
更新hausarbeit-jura.cls
\documentclass{hausarbeit-jura}
\usepackage{expl3}
\usepackage{hyperref}
\usepackage[counter,user,hyperref,titleref]{zref}
\makeatletter
\zref@newprop{chapterprop}{\thechapter}
\zref@newprop{sectionprop}{\thesection}
\zref@newprop{subsectionprop}{\thesubsection}
\zref@newprop{subsubsectionprop}{\thesubsubsection}
\zref@addprops{main}{chapterprop,sectionprop,subsectionprop,subsubsectionprop}
\ExplSyntaxOn
\cs_new:Npn \extractstructure #1{
\str_case_x:nn {\zref@extract{#1}{counter} }
{
{chapter} {\zref@extract{#1}{chapterprop} }
{section} {\zref@extract{#1}{chapterprop}~\zref@extract{#1}{sectionprop} }
{subsection} {\zref@extract{#1}{chapterprop}~\zref@extract{#1}{sectionprop}~\zref@extract{#1}{subsectionprop} }
{subsubsection} {\zref@extract{#1}{chapterprop}~\zref@extract{#1}{sectionprop}~\zref@extract{#1}{subsectionprop}~\zref@extract{#1}{subsubsectionprop} }
}
}
\ExplSyntaxOff
\newcommand{\fullref}[1]{%
% Check for existence and provide a hyperlink
\zref@ifrefundefined{#1}{%
}{%
\hyperlink{\zref@extract{#1}{anchor}}{\extractstructure{#1} \zref@extract{#1}{title}}
}%
}
\makeatother
\begin{document}
See \fullref{my-label} or \fullref{somechapter}
\chapter{Example-heading}
\section{Example-subheading}
\section{Example-subheading 2}
\subsection{Example subsubheading}
\subsubsection{Example subsubheading}
\subsubsection{Example subsubheading 2} \zlabel{my-label}
\chapter{Example-heading 2} \zlabel{somechapter}
\section{Example-subheading again}
\end{document}
答案3
我对标准文档类有同样的疑问:缩写参考文献:仅列出必要的参考文献,不再赘述
简而言之:如果我在“II.”分支上,则来自例如 II.3.b) 的引用不需要指向 II.1.a),而只需指向 1.a)。但如果我从 III. 下的某个地方引用,则文本中的引用当然必须是 II.1.a)。
我花了一整天的时间并得到了很多帮助才找到这个解决方案: