处理宏中的 _

处理宏中的 _

所以我有大量名称中带有 _ 的数字。我想将它们包含在我的文档中,并打印文件的文件名。例如:

\foreach \dataset in {CPD, EPAFHM, FDA, cas_N6512, cox2, dhfr, screen_U251} {
    \foreach \height in {0,1,2,3,4,5} {
            \begin{minipage}{0.5\textwidth}
            \includegraphics[width=0.45\textwidth]{heatmaps/\dataset\height Bit.pdf}
            AUC for bit fingerprint of height \height for dataset \dataset.
            \end{minipage}
    }
}

它对图形来说效果很好,但当然在打印方面_应该更好\_。我该如何解决这个问题?我看过这个问题但看起来似乎不是一回事。

另外,如果我尝试该underscore包,它适用于文本,但不适用于图形。

答案1

图形包本身在打印文件名时info使用选项

       \edef\@tempa{#3}%
       \rlap{ \ttfamily\expandafter\strip@prefix\meaning\@tempa}%

所以你可以

\makeatletter
\def\showfilename#1{%
  \edef\@tempa{#1}%
   \texttt{\expandafter\strip@prefix\meaning\@tempa}}%
\makeatother

用于\showfilename{\dataset}

答案2

根据T1字体编码,\detokenize将允许您打印下划线:

在此处输入图片描述

\documentclass{article}
\usepackage[T1]{fontenc}% http://ctan.org/pkg/fontenc
\def\dataset{xyz_123}
\begin{document}
\detokenize{abc_123} \expandafter\detokenize\expandafter{\dataset}
\end{document}

相关内容