用于格式化和破坏类名、文件路径等的宏?

用于格式化和破坏类名、文件路径等的宏?

我想格式化文档中的类、文件路径、目录路径、方法名称等。最基本的,每个都应该格式化为 \texttt。但是,LaTeX 何时可以换行的规则不同。例如:

  • 类:在 '.' 处中断。例如,“java.util.String”可能在 2 处中断
  • 文件和目录路径:在“/”处中断。例如,“C:\a\b\c”可能在 3 处中断
  • 方法名称:在空格处断开。例如,“public getText()” 可以在 1 处断开

我该怎么做呢?下面的 defs 是一个起点,但它没有提供任何破坏行为,因为 LaTeX 默认不会破坏 \texttt。

\newcommand{\class}[1]{\texttt{#1}}
\newcommand{\method}[1]{\texttt{#1}}
..

答案1

在该包的帮助下url我们可以定义三个新命令:\class\filedir\method

首先我们url按如下方式加载包:

\usepackage[obeyspaces,spaces]{url}

obeyspaces需要该选项,否则\url-like 命令内的所有空格都将被忽略,并且spaces需要该选项,否则我们将无法在空格处换行。

这些是定义:

\DeclareUrlCommand\class{%
  \renewcommand{\UrlBigBreaks}{\do\.}%
  \renewcommand{\UrlBreaks}{\do\.}%
  }
\DeclareUrlCommand\filedir{%
  \renewcommand{\UrlBigBreaks}{\do\\}%
  \renewcommand{\UrlBreaks}{\do\\}%
  }
\DeclareUrlCommand\method{%
  \renewcommand{\UrlBigBreaks}{}%
  \renewcommand{\UrlBreaks}{}%
  }

在第一种情况下,我们创建一个命令,该命令仅在.遇到 a 时允许中断。在第二种情况下,我们创建一个命令,该命令仅在遇到 a 时允许中断。在第三种情况下,我们将列表留空,因为选项在加载时\已经允许空格。spaces

梅威瑟:

\documentclass{article}
\usepackage[obeyspaces,spaces]{url}
\DeclareUrlCommand\class{%
  \renewcommand{\UrlBigBreaks}{\do\.}%
  \renewcommand{\UrlBreaks}{\do\.}%
  }
\DeclareUrlCommand\filedir{%
  \renewcommand{\UrlBigBreaks}{\do\\}%
  \renewcommand{\UrlBreaks}{\do\\}%
  }
\DeclareUrlCommand\method{%
  \renewcommand{\UrlBigBreaks}{}%
  \renewcommand{\UrlBreaks}{}%
  }

\begin{document}
text text text text text text text text text text text text text text tex \class{java.util.String}

text text text text text text text text text text text text text text tex \filedir{C:\a\b\c}

text text text text text text text text text text text text text text \method{public getText()}
\end{document} 

输出:

在此处输入图片描述

相关内容