\adjustbox 与 XeLaTeX 错放超链接

\adjustbox 与 XeLaTeX 错放超链接

这是来自更大文档的最小(不)工作示例:

\documentclass{article}
\usepackage{adjustbox}
\usepackage{hyperref}

\begin{document}

\newcommand\hreftt[2]{%
    \href{#1}{\texttt{#2}}%
}
\newcommand{\rubylink}{\href{https://en.wikipedia.org/wiki/Ruby_(programming_language)}{Ruby}}
\newcommand{\erlanglink}{\href{https://en.wikipedia.org/wiki/Erlang_(programming_language)}{Erlang}}
\newcommand{\pythonlink}{\href{https://en.wikipedia.org/wiki/Python_(programming_language)}{Python}}
\newcommand{\powershelllink}{\href{https://en.wikipedia.org/wiki/PowerShell}{PowerShell}}
\begin{table}
    \begin{adjustbox}{max width=\textwidth}
    \begin{tabular}{l|l|l|l|l}
        Programming language & \rubylink         & \rubylink, \erlanglink  & \pythonlink, \powershelllink  & \pythonlink           \\\hline
        Something            & aaaaaaaaaaaaaaaaa & bbbbbbbbbbbbb           & ccccccccccccc                 & dddddddddddddddddddd
    \end{tabular}
    \end{adjustbox}
    \caption{This is test}
\end{table}

\end{document}

当我使用该命令编译它时,latexmk -pdf它会生成正确的 PDF:

正确输出

但是当我编译时西拉特克斯,就像这样:latexmk -pdf -pdflatex=xelatex它产生:

在此处输入图片描述

不幸的是我需要使用西拉特克斯并且上述示例需要生成正确的 PDF。我该如何修复放错位置的超链接?

答案1

缩放表格是一种糟糕的排版方式。它会导致字体大小不均匀。

您的问题是由于 xetex.def 的更改导致链接区域滑动中断。此问题影响当前的 texlive 2016、texlive 2017 预测试版和当前的 miktex。

作为一种解决方法,在问题解决之前,您可以尝试通过添加到文档来恢复到旧的定义。

\makeatletter
\def\Gscale@start{%
  \special{x:gsave}\special{x:scale \Gscale@x\space\Gscale@y}}
\makeatletter

您也可以使用 tikz,因为当正确使用 xelatex 时它会缩放链接区域(但 pdflatex 不会这样做)

\documentclass{article}
\usepackage{adjustbox,tikz}
\usepackage{hyperref}

\begin{document}\parskip1cm
\newcommand{\rubylink}{\href{https://en.wikipedia.org/wiki/Ruby_(programming_language)}{Ruby}}

abc \rubylink cde

\scalebox{2}{abc \rubylink cde}

\tikz[scale=2,transform shape]\node[inner sep=0]{abc \rubylink cde};

\end{document}

在此处输入图片描述

相关内容