Как указать альфа-ключ библиографии без изменения файла .bst или использования BibLaTeX

Как указать альфа-ключ библиографии без изменения файла .bst или использования BibLaTeX

Как сообщить 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

Поскольку никто не хочет делать все как надо, вот вам совет:

  1. Это работает только с авторами, которые не содержат слова, начинающиеся со строчной буквы.
  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, результат будет выглядеть так:

уродливый взлом bibkey


Полный 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}
}

Выход:

лучший ключ-нагрудник

Связанный контент