File Exchange

image thumbnail

ftoc (v1.2)

version (3.1 KB) by Kenneth Eaton
Creates a table of contents of functions contained in an m-file


Updated 19 May 2009

View Version History

View License

Since some of the m-files I work with are very large, and contain many nested functions and subfunctions, I find it helpful to keep a short and simple table of contents in the top comment block that tells me which functions are in the m-file, their line numbers, and how they are nested. I wrote FTOC to generate this function table of contents automatically. This was inspired by a posting by Yair Altman on the mathworks newsgroup where he described how to use the undocumented function MLINTMEX. If you're interested in getting even greater detail about m-file contents, you should check out the postings by Urs Schwarz acknowledged below.

Here's how FTOC is used:

STR = FTOC(FILE) returns a character array table of contents STR for all nested functions and subfunctions within the m-file FILE (built-in functions are not displayed). The line numbers of each function are included, and the indentation of the function names indicates the nesting order. FILE should be an m-file name. If FILE is not found, or there are no subfunctions or nested functions, STR will be an empty string.

STR = FTOC(FILE,'insert') will return a character array table of contents STR formatted for the purpose of inserting it into the header comment block of the m-file FILE. Each line begins with the character '%' and the line numbers are adjusted to account for the fact that STR will be inserted somewhere within the top comment block of FILE. (NOTE: you will want to first remove any old table of contents from the comment block before pasting the new one in, to make sure the line numbers are adjusted correctly.)

(See function help for examples)

Cite As

Kenneth Eaton (2021). ftoc (v1.2) (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (13)

per isakson

I tried ftoc by running ftoc('staker.m') on R2018b and got a result that is very close to that of the help section of ftoc(). (I used Staker v0.6.) [NS] in the regular expression stands for sub-function and nested function, respectively.
ftoc reports methods of classes as sub-functions.


I tried it with 2018b Update 3 and it did't worked. I went step by step until the line
fileData = regexp(fileData,'[NS](\d+) (\d+) \d+ (\w+)\n','tokens');
where something happens under the hood and fileData is getting - "0×0 empty cell array"
I suppose mlintmex has changed the output format.
It's a pity :-(

Tim Davis

John D'Errico

While I cannot force the trash ratings by Marco to be removed, this is far better than his rating indicates. The help is quite good. This will be a useful utility if you work on large software projects in MATLAB.

John D'Errico


Wording and initials suggest the poor poor rating was written by the infamous file exchange author 'marco', either by accident or in revenge. So far I thought DNFTT, but if it's true he now starts to mess up the rating system, I think there should be a way to block him and to annul his rating.

Ken Eaton

Is that comment supposed to make sense?... because it doesn't.

m p

Program don’t show this, don’t show clssification. Future versions will show classification: You=Infinite==Infinite|or|Circle*NaN...

Ken Eaton

Is there some reason someone is downloading hundreds of copies of this?

fex observer

The submissions mentioned by the first reviewer do an excellent job and are clearly superior to your program.

Ken Eaton

Thanks for the heads up, us. I don't know how I managed to miss FARG when I was looking around to see if anything like this had been done. It looks like a much more beefed-up and detailed version of what I was doing here... I'll have to check it out =).


Ken Eaton

I've submitted a slightly updated version to remove some mlint messages. The help description was also not formatting properly (no indents appeared, so you have to look at the function header for correct examples).

MATLAB Release Compatibility
Created with R14SP3
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!