我甚至不确定如何提出这个问题,也不确定合适的标签,所以如果这是一个愚蠢的问题,可能会有一些编辑甚至删除......但我认为这是人们想要的功能......
我经常发现自己写的是信息丰富的文档(我希望如此),但需要\href{addr}{name}
提供更多内容。我知道我可以做一次,但读者必须在许多页面中寻找单词才能“到达那里”。
如果我可以依赖它们的列表(例如在 .bib 文件中),那么新的定义就可以提供相同的功能,那就太好了。
愚蠢的例子......而不是这样;
I like the search engine \href{https://duckduckgo.com}{duckduckgo} because \href{https://duckduckgo.com}{duckduckgo} provides me with privacy I don't really understand.
像这样的事情;
I like the search engine \hrefcite{DDGo} because \hrefcite{DDGo} provides me with privacy I don't really understand.
(where there are a list of these items, e.g. `\newcommand{\DDGo}[1]{\href{https://duckduckgo.com}{DuckDuckGo}}`)
也许已经有类似的东西了...我以前用过glossary
但我也不知道它有什么帮助。
目前,在我的主文件的序言/home/me/somewhere/hrefListForInput.tex
下,有什么样的外部文件,例如。在\input
main.tex
\input{/home/me/somewhere/hrefListForInput}
hrefListForInput.tex
\newcommand{\DDGo}[0]{ \href{https://duckduckgo.com}{DuckDuckGo } }%
\newcommand{\foam}[0]{\href{https://sourceforge.net/projects/foam-extend/}{OpenFOAM }}
我在 中main.tex
使用这些定义,例如,
I like using \foam in \DDGo.
出现“某种”问题是因为如果我不在 的第二个参数的最后一个字母后添加空格\href
,它就会转到下一个单词。如果我添加空格(如我所写),则一切正常,除了句子末尾的最后一个单词和句号前有一个奇怪的空格。
之前我遇到了一个错误,需要将文件扩展名附加.tex
到hrefListForInput.tex
。
我正在使用 LuaLatex/Linux/TeXLive,一个article
文档类,因此可以使用\directlua
或类似的东西,但更通用的方法会更好。
答案1
你可以使用biblatex
。最简单的方法可能是定义你自己的 cite 命令
\documentclass{article}
\usepackage{biblatex}
\usepackage{hyperref}
\DeclareCiteCommand{\hrefcite}{\usebibmacro{prenote}}{%
\usebibmacro{citeindex}%
\href{\thefield{url}}{\printfield{label}}%
}{\multicitedelim}{\usebibmacro{postnote}}
\begin{filecontents}{\jobname.bib}
@online{foam,
url = {https://sourceforge.net/projects/foam-extend/},
label = {OpenFOAM},
}
@online{DDGo,
url = {https://duckduckgo.com},
label = {DuckDuckGo},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
I like using \hrefcite{foam} in \hrefcite{DDGo}.
\end{document}
答案2
答案3
您可以使用词汇表来存储和打印您的链接:
\documentclass{article}
\begin{filecontents}{allLinks.tex}
\newglossaryentry{LINK1}{
name={\href{https://www.overleaf.com/}{Linky link}},
description = {\url{https://www.overleaf.com/}}
}
\newglossaryentry{LINK2}{
name={\href{https://www.sharelatex.com/}{Link linky}},
description = {\url{https://www.sharelatex.com}}
}
\end{filecontents}
\usepackage{hyperref}
\usepackage{glossaries}
\input{allLinks.tex}
\makeglossaries
\begin{document}
\section{One}
Texidy texti text \gls{LINK1} text text
\section{Two}
and also \gls{LINK2}
\printglossaries
\end{document}
此示例是一个带有两个链接的文件,您可以使用词汇表包中可用的所有样式来更改列表的打印方式。
使用此 MWE,链接将显示为纯文本。如果您希望将它们格式化为链接,请查看https://tex.stackexchange.com/a/392724/90297