Проблема патологических списков: тильда в \lstinline в сноске

Проблема патологических списков: тильда в \lstinline в сноске

Кажется, я не могу написать тильду в \lstinline в сноске. Если вы раскомментируете единственную закомментированную строку в моем минимальном рабочем примере, вы поймете, что я имею в виду:

\documentclass{article}

\usepackage{listings}

\begin{document}
This works:
\begin{lstlisting}
~/path/to/file
\end{lstlisting}

And this works: \lstinline{~/path/to/file}

And this works:\footnote{\lstinline{/path/to/file}}

%But this does \emph{not} work:\footnote{\lstinline{~/path/to/file}}
\end{document}

правка: Я не уверен, что ответ на этот вопрос был достаточно полно раскрыт в связанной статье (списки в сносках), потому что этот вопрос относился к listingsокружающей среде, а не lstinlineк макросу.

решение1

Когда \lstinlineнаходится в аргументе другой команды, она работает ограниченно, поскольку не может выполнять определенные действия. Вы можете попробовать с \scantokens, что работает, по крайней мере с ~.

\documentclass{article}

\usepackage{listings}

\begin{document}
This works:
\begin{lstlisting}
~/path/to/file
\end{lstlisting}

And this works: \lstinline{~/path/to/file}

And this works:\footnote{A path: \lstinline{/path/to/file}}

But this does \emph{not} work:\footnote{A path: \scantokens{\lstinline{~/path/to/file}\relax}}
\end{document}

введите описание изображения здесь

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