由于我必须制作三卷书并进行交叉引用,因此我的参考系统相对复杂。到目前为止,除了一件小事外,一切都运行良好:
引用页面后,页码后和点前会有空格,如下所示:
第八部分 4。
它应该是:
第八章 4.
我可以通过在命令中添加一个点来解决这个问题,但我做不到,因为有时我应该写的地方:
第八页第 4、12、15 页。
在该命令中添加一个点将产生:
Vgl. S. 4., 12., 15..
所以我需要找到一种方法让 Latex 停止在页码后添加空白。
这是我的 MWE。
\documentclass[twoside]{scrbook}
\usepackage[]{scrlayer-scrpage}
\usepackage{lipsum}
\usepackage{hyperref}
\hypersetup{%
colorlinks,%
citecolor=black,%
filecolor=black,%
linkcolor=black,%
urlcolor=black,%
hypertexnames=false%
}%
\usepackage[counter,user,hyperref]{zref}
\makeatletter
\AtBeginDocument{%
\@ifpackageloaded{hyperref}{%
}{
\providecommand{\phantomsection}{}
\providecommand{\hyperlink}[2]{#2}
}
\zref@newlist{partpage}
\zref@newprop*{partprop}[-1]{\number\value{part}}
\zref@addprops{partpage}{partprop,page,anchor}
%\newcounter{herecntr}
\newcommand{\here}[1]{%
\phantomsection% Needed for correct hyper links
\zref@labelbyprops{#1}{partprop,page,anchor}%
}
\newcommand{\crossref}[1]{%
\ifnum\value{part}=\zref@extract{#1}{partprop}\relax% Check whether the current part counter value is the same as the extracted part property from the label
S. \hyperlink{\zref@extract{#1}{anchor}}{\zpageref{#1}}
\else% No, it is not the same!
Booktitle, Bd. \zref[partprop]{#1}, S. \hyperlink{\zref@extract{#1}{anchor}}{\zpageref{#1}}%
\fi
}
}
\makeatother
\clearpairofpagestyles
\lehead{}
\cehead{Chapter\space\leftmark}
\lehead{\pagemark}
\lohead{}
\cohead{\rightmark}
\rohead{\pagemark}
\lefoot{}
\cfoot{}
\begin{document}
\chapter{CHTITLE}
\lipsum[1-20]\here{test}\label{test}
\section{STITLE}
\lipsum[21-40]\footnote{Vgl. \crossref{test}.}
\end{document}
答案1
你有不需要的空白在代码中的页码后面。您可以通过注释掉定义中的换行符来解决这个问题\crossref
:
\newcommand{\crossref}[1]{%
\ifnum\value{part}=\zref@extract{#1}{partprop}\relax% Check whether the current part counter value is the same as the extracted part property from the label
S. \hyperlink{\zref@extract{#1}{anchor}}{\zpageref{#1}}% <-- HERE
\else% No, it is not the same!
Booktitle, Bd. \zref[partprop]{#1}, S. \hyperlink{\zref@extract{#1}{anchor}}{\zpageref{#1}}%
\fi
}