我已经使用 \newcommand 创建了自己的命令,并且它在参数中输入“静态”时运行良好。但是,当我给出例如 a 时,\nameref{sec:title}
它会抛出如下错误:
- 未定义控制序列
- 缺少插入的 endcsname
- 额外的 endcsname
我如何创建一个支持此功能的命令?
我这样定义新命令:
\newcommand{\faqFarm}[6]{
\begin{table}[h!]
\label{faqFarm#1}
\begin{tabularx}{\textwidth}{@{}XXXX@{}}
#1 & #2 & #4 & #6 \\
& #3 & #5 &
\end{tabularx}
\end{table}
}
错误的工作示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{hyperref}
\newcommand{\faqFarm}[6]{
\begin{table}[htb]
\label{faqFarm#1}
\begin{tabularx}{\textwidth}{@{}XXXX@{}}
\textbf{Navn:} & \textbf{Adresse:} & \textbf{Koordinater:} & \textbf{Jord:}\\
#1 & #2 & #4 & #6 hektar\\
& #3 & #5 &
\end{tabularx}
\end{table}
}
\begin{document}
\subsection{Working with nameref in custom command}
\label{sec:mySubSection}
the title one more time: \nameref{sec:mySubSection}
\faqFarm{\nameref{sec:mySubSection}}{Bjerndrupvej 41}{6240 Løgumkloster}{Nord: 55.099754}{Øst: 9.012645}{77,625}
\end{document}
答案1
\newcommand{\faqFarm}[6]
\begin{table}[h!]
\label{faqFarm#1}
\begin{tabularx}{\textwidth}{@{}XXXX@{}}
#1 & #2 & #4 & #6 \\
& #3 & #5 &
\end{tabularx}
\end{table}
}
你失踪{
后[6]
\label
应该总是在之后(或之内),\caption
所以在这里不起作用
[h!]
是一个糟糕的选项,通常会生成已更改的警告。最好使用[htp]
(常规使用没有意义!
,这仅适用于需要忽略文档约束的特殊情况)
如上所述,如果您需要引用页码以外的任何内容,则\label
必须在其后,但如果您想这样做,您需要一个构成标签文本的新(第 7 个)参数,您不能将引用放在涉及测试和排版命令的引用中,并且标签必须是简单 ascii 字符的内部标识符。\caption
\label{faqFarm#1}
\label
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{hyperref}
\newcommand{\faqFarm}[7]{
\begin{table}[htb]
\label{faqFarm#7}
\begin{tabularx}{\textwidth}{@{}XXXX@{}}
\textbf{Navn:} & \textbf{Adresse:} & \textbf{Koordinater:} & \textbf{Jord:}\\
#1 & #2 & #4 & #6 hektar\\
& #3 & #5 &
\end{tabularx}
\end{table}
}
\begin{document}
\subsection{Working with nameref in custom command}
\label{sec:mySubSection}
the title one more time: \nameref{sec:mySubSection}
\faqFarm{Bjerndrupvej 41}{6240 Løgumkloster}{Nord: 55.099754}{Øst: 9.012645}{77,625}{???}{sec:mySubSection}
\end{document}