Как сообщить LaTeX, какую буквенную клавишу следует назначить библиографической записи, не изменяя файл .bst
?
Пример: Я хочу запись с
author = {no one 910 (StackOverflow User 118593)}
отображаться как [StO17] вместо [noSU17].
Рабочий tex-файл:
\documentclass{article}
\begin{document}
Hereby I cite \cite{myself}.
\bibliographystyle{alpha}
\bibliography{bibliography}
\end{document}
библиография.bib:
@misc{myself,
author = {no one 910 (StackOverflow User 118593)},
title = {{StackOverflow Answer}},
howpublished = "https://stackoverflow.com",
year = {2017}
}
Выход:
решение1
Это было бы очень просто с biblatex
:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{myself,
shorthand = {StO17},
author = {no one 910 (StackOverflow User 118593)},
title = {{StackOverflow Answer}},
howpublished = "https://stackoverflow.com",
year = {2017}
}
\end{filecontents*}
\usepackage[style=alphabetic]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
Hereby I cite \cite{myself}.
\printbibliography
\end{document}
решение2
Поскольку никто не хочет делать все как надо, вот вам совет:
- Это работает только с авторами, которые не содержат слова, начинающиеся со строчной буквы.
- Добавьте
\Bibkeyhack StO
имя автора, где ключ — StO.
Определение команды:(Вот и все!)
\newcommand{\Bibkeyhack}[3]{}
Если вам нужны ключи другой длины, замените 3 на свою длину.
Для 1. есть обходной путь:
\newcommand{\SmallHack}[1]{\lowercase{#1}}
Обратите внимание, что обе команды начинаются с заглавной буквы, так что правило 1 не нарушается.
Рабочий пример:
author = {\SmallHack No \SmallHack One 910 (StackOverflow User 118593)\Bibkeyhack StO}
Что приведет к [StO17]: никто 910. Изображение-доказательство:
Важный: Если поставить пробел между )
и \Bibkeyhack
, результат будет выглядеть так:
Полный tex-файл:
\documentclass{article}
\newcommand{\SmallHack}[1]{\lowercase{#1}}
\newcommand{\Bibkeyhack}[3]{}
\begin{document}
Hereby I cite \cite{myself}.
\bibliographystyle{alpha}
\bibliography{bibliography}
\end{document}
библиография.bib:
@misc{myself,
author = {\SmallHack No \SmallHack One 910 (StackOverflow User 118593)\Bibkeyhack StO},
title = {{StackOverflow Answer}},
howpublished = "https://stackoverflow.com",
year = {2017}
}
Выход: