URL 包与 indentfirst 和 changepage 包交互,在路径命令中插入空格

URL 包与 indentfirst 和 changepage 包交互,在路径命令中插入空格
\documentclass[12pt]{article}
\usepackage[obeyspaces,spaces]{url}
\usepackage{indentfirst}
\usepackage{changepage}
\newlength{\anIndent}
\setlength{\anIndent}{\parindent}
\newcommand{\myPar}[1]
{
\begin{adjustwidth}{2\anIndent}{}
    \hspace{\anIndent}
    #1              
\end{adjustwidth}
}  

\begin{document}
\myPar
{
\path{C:\Data Temp\Cam.dat}
}
\end{document}

这是我找到的最接近 MWE 示例的例子。这里的问题似乎是 indentfirst 和 changepage 包以某种方式改变了 url 包的工作方式,并在路径中的“Cam”文本后插入了一个不必要的空格。有什么解决办法吗?非常感谢您的宝贵时间!

答案1

提供的命令url使用与逐字命令相同的机制。因此您必须以特殊方式处理它。对于您来说,该软件包cprotect将帮助您:

\documentclass[12pt]{article}
\usepackage[obeyspaces,spaces]{url}
\usepackage{cprotect}
\def\testcommand#1{#1{}}
\begin{document}
\cprotect\testcommand{\path{C:\Data Temp\Cam.dat}}

\testcommand{\path{C:\Data Temp\Cam.dat}}
\end{document}

或者就你的情况而言:

\documentclass[12pt]{article}
\usepackage[obeyspaces,spaces]{url}
\usepackage{indentfirst}
\usepackage{changepage}
\usepackage{cprotect}
\newlength{\anIndent}
\setlength{\anIndent}{\parindent}
\newcommand{\myPar}[1]
{
\begin{adjustwidth}{2\anIndent}{}
    \hspace{\anIndent}
    #1              
\end{adjustwidth}
}  

\begin{document}
\cprotect\myPar
{
\path{C:\Data Temp\Cam.dat}
}
\end{document}

更多信息请参见:http://www.tex.ac.uk/FAQ-verbwithin.html

相关内容