我想格式化文档中的类、文件路径、目录路径、方法名称等。最基本的,每个都应该格式化为 \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}
输出: