我希望能在LaTeX中排版出图1样式的列表,即
hyperref
作用,以进行超链接跳转我尝试使用了threeparttable
宏包,但它未能做到要求中的2与3,因此求助,我该怎么做呢?
附:图2代码
\documentclass[11pt,a4paper,english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage{booktabs}
\usepackage[colorlinks,linkcolor=red,anchorcolor=blue,citecolor=green]{hyperref}
\usepackage{threeparttable}
\begin{document}
\begin{table}[!ht]
\caption{A table with notes}\label{tab:tablenotes}
\centering
\begin{threeparttable}
\begin{tabular}{*4{c}}\toprule
Table head\tnote{1} & Table head\tnote{1} & Table head\tnote{2} & Table head\tnote{2} \\ \midrule
Some values & Some values & Some values & Some values \\
Some values & Some values & Some values & Some values \\
Some values & Some values & Some values & Some values \\
Some values & Some values & Some values & Some values \\ \bottomrule
\end{tabular}
\begin{tablenotes}
\footnotesize
\item[1] The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
\item[2] The quick brown fox jumps over the lazy dog.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
在ctex
宏包文档的源文件ctex.dtx
中,有如下一段代码:
% Line 924~977
\begin{table}[htbp]
\centering
\begin{threeparttable}
\caption{\CTeX{} 宏集自动配置字体策略}
\label{tab:default-font-select}
\begin{tabular}{*{5}{c}}
\toprule
& macOS Old\tnote{1}
& macOS New\tnote{2}
& Windows\tnote{3}
& 其他 \\
\midrule
\XeLaTeX & \makecell{\pkg{xeCJK}\\华文字库}
& \makecell{\pkg{xeCJK}\\华文字库 + 苹方}
& \makecell{\pkg{xeCJK}\\中易字库 + 微软雅黑}
& \makecell{\pkg{xeCJK}\\Fandol 字库\tnote{4}} \\
\cmidrule(lr){1-5}
\LuaLaTeX\tnote{5}
& \makecell{\pkg{LuaTeX-ja}\\华文字库}
& \makecell{\pkg{LuaTeX-ja}\\华文字库 + 苹方}
& \makecell{\pkg{LuaTeX-ja}\\中易字库 + 微软雅黑}
& \makecell{\pkg{LuaTeX-ja}\\Fandol 字库} \\
\cmidrule(lr){1-5}
\pdfLaTeX
& 不可用
& 不可用
& \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库 + 微软雅黑\tnote{6}}
& 不可用 \\
\cmidrule(lr){1-5}
\makecell{\LaTeX{} + \\\dvipdfmx}
& 不可用
& \makecell{\pkg{CJK} + \pkg{zhmetrics}\\华文字库 + 苹方}
& \makecell{\pkg{CJK} + \pkg{zhmetrics}\\中易字库 + 微软雅黑\tnote{6}}
& \makecell{\pkg{CJK} + \pkg{zhmetrics}\\Fandol 字库} \\
\cmidrule(lr){1-5}
\makecell{\upLaTeX{} + \\\dvipdfmx}
& 不可用
& \makecell{\pkg{zhmetrics-uptex}\\华文字库 + 苹方}
& \makecell{\pkg{zhmetrics-uptex}\\中易字库 + 微软雅黑}
& \makecell{\pkg{zhmetrics-uptex}\\Fandol 字库} \\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item [1] Yosemite (10.10) 及以前的 macOS 系统。
\item [2] El Capitan (10.11) 及以后的 macOS 系统。
\item [3] 仅支持 Windows Vista 及以后的 Windows 操作系统。
\item [4] 由马起园、苏杰、黄晨成等人开发的开源中文字体,
参见:\url{https://www.ctan.org/pkg/fandol}。
\item [5] \LuaLaTeX{} 编译时使用 \pkg{LuaTeX-ja} 宏包。对此,
第 \ref{sec:lualatex-chinese}~节有特别说明。
\item [6] 微软雅黑字体并不总是有效,这和选项 \opt{zhmap} 的取值有关。
\end{tablenotes}
\end{threeparttable}
\end{table}
但实际上这还不够...因为索引和超链接仍未定义,经过一番逆向工程,我们不难在ctxdoc.cls
中找到如下定义的代码,下面的大致重定义了tnote
环境,同时利用hypertarget
设置了索引,抄就完了...
%% line 136~151
%% 重新定义 threeparttable 包的 tablenotes 环境
\renewlist{tablenotes}{description}{1}
\setlist[tablenotes]{%
format=\normalfont\tnote@item,align=right,listparindent=\parindent,
labelindent=\tabcolsep,leftmargin=*,rightmargin=\tabcolsep,
after=\@noparlisttrue}
\AtBeginEnvironment{tablenotes}{%
\setlength\parindent{2\ccwd}%
\normalfont\footnotesize}
\AtBeginEnvironment{threeparttable}{%
\stepcounter{tpt@id}%
\edef\curr@tpt@id{tpt@\arabic{tpt@id}}}
\newcounter{tpt@id}
\def\tnote@item#1{%
\Hy@raisedlink{\hyper@anchor{\curr@tpt@id-#1}}#1}
\def\TPTtagStyle#1{\hyperlink{\curr@tpt@id-#1}{#1}}
那么我们实际上就可以实现如下的效果...
\documentclass[11pt,a4paper,english]{ctexart}
\usepackage{tikz}
\usetikzlibrary{ducks}
\usepackage{enumitem}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage{threeparttable}
\usepackage{booktabs}
% \usepackage[colorlinks,linkcolor=red,anchorcolor=blue,citecolor=green]{hyperref}
\usepackage[colorlinks]{hyperref}
\makeatletter
%% copy from ctxdoc.cls
%% Line 136~151
%% 重新定义 threeparttable 包的 tablenotes 环境
\renewlist{tablenotes}{description}{1}
\setlist[tablenotes]{%
format=\normalfont\tnote@item,align=right,listparindent=\parindent,
labelindent=\tabcolsep,leftmargin=*,rightmargin=\tabcolsep,
after=\@noparlisttrue}
\AtBeginEnvironment{tablenotes}{%
\setlength\parindent{2\ccwd}%
\normalfont\footnotesize}
\AtBeginEnvironment{threeparttable}{%
\stepcounter{tpt@id}%
\edef\curr@tpt@id{tpt@\arabic{tpt@id}}}
\newcounter{tpt@id}
\def\tnote@item#1{%
%\Hy@raisedlink{\hyper@anchor{\curr@tpt@id-#1}}{#1}
%\Hy@raisedlink{\hyper@anchor{\curr@tpt@id-#1}}{\color{red}\textsuperscript{#1}}}
% modify the \textsuperscript{#1} here and change your ideal font style freely...
\Hy@raisedlink{\hyper@anchor{\curr@tpt@id-#1}}{\begin{tikzpicture}[scale=.5] \duck[signpost=#1] \end{tikzpicture}}} % 你甚至可以在这里画一只鸭子...
\def\TPTtagStyle#1{\hyperlink{\curr@tpt@id-#1}{#1}}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{table}[htbp]
\caption{A table with notes}\label{tab:tablenotes}
\centering
\begin{threeparttable}
\begin{tabular}{*4{c}}\toprule
Table head\tnote{1} & Table head\tnote{1} & Table head\tnote{2} & Table head\tnote{2} \\ \midrule
Some values & Some values & Some values & Some values \\
Some values & Some values & Some values & Some values \\
Some values & Some values & Some values & Some values \\
Some values & Some values & Some values & Some values \\ \bottomrule
\end{tabular}
\begin{tablenotes}
\footnotesize
\item[1] The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
\item[2] The quick brown fox jumps over the lazy dog.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
谢谢你,牢e